我在將來自另一個類的消息發送到ViewController
時更新視圖時遇到問題。當消息發送到其視圖控制器時查看不更新
基本上我有一個應用程序與單個窗口不同的自定義視圖將換出另一個。我有一個AppController
類管理這個和正常工作:
@interface AppController : NSObject
@property (weak) IBOutlet NSView *ourView;
@property (strong) NSViewController *ourViewController;
- (IBAction)changeView:(id)sender;
- (IBAction)start:(id)sender;
- (void)changeViewContoller:(NSInteger)tag;
@end
當一個新的視圖被換出另一種情況是ourViewController
屬性將被更新爲指向該視圖的控制器類。每個視圖控制器類都會有一個名稱相同的方法,例如「action」。這種方法應該改變視圖上的某些東西。
所以AppController
類中的「start」方法將調用ourViewController
屬性上的「action」方法。要做到這一點,我使用的objc_msgSend()
方法:
objc_msgSend(self.ourViewController, action);
這裏的視圖控制器類定義:
@interface CountdownViewController : NSViewController
@property (weak) IBOutlet NSTextField *label;
- (IBAction)changeLabel:(id)sender;
- (void)start;
@end
我在「行動」方法放在一個NSLog()
每個ViewController
,看它是否是工作,但它的確如此,但「動作」方法也應該改變標籤的字符串值,但它不會。如果有人知道爲什麼視圖沒有被更新,那將是非常有用的。謝謝!
我郵寄編輯,以顯示視圖控制器定義。我也改變了objc_msgsend執行選擇器,但它沒有什麼區別。 – user115188
這個觀點很弱......所以我再問一遍:它在別的地方?否則,它將消失恕我直言,即使它是ViewController的看法,它可以走開:) –
不,我不認爲它是其他任何東西。會使它強大解決這個問題? – user115188