2012-11-08 33 views
0

我在將來自另一個類的消息發送到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,看它是否是工作,但它的確如此,但「動作」方法也應該改變標籤的字符串值,但它不會。如果有人知道爲什麼視圖沒有被更新,那將是非常有用的。謝謝!

回答

0

視圖持有弱? 嘗試使堅強,如果您需要保留這個指針在這個類

BTW:..also你爲什麼objc_msgsend ....使用performSelector

+0

我郵寄編輯,以顯示視圖控制器定義。我也改變了objc_msgsend執行選擇器,但它沒有什麼區別。 – user115188

+0

這個觀點很弱......所以我再問一遍:它在別的地方?否則,它將消失恕我直言,即使它是ViewController的看法,它可以走開:) –

+0

不,我不認爲它是其他任何東西。會使它強大解決這個問題? – user115188

相關問題