我有一個AppController類,它以通常的方式在我的應用程序中查看/控制。目標C類之間的通信
有沒有在IB我的應用程序的主窗口,導致AppController中實例化一個新的窗口控制器(accountPanelController),並表明輔助窗口上的按鈕:
- (IBAction) showAccountPanel:(id) sender
{
//Is accountController nil?
if (!accountPanelController) {
accountPanelController = [[AccountPanelController alloc] init];
}
[accountPanelController showWindow:self];
}
當新的窗口與做的,我想從我的輔助窗口控制器收集到的數據發送到方法的AppController:
- (IBAction) close: (id) sender
{
NSLog(@"Close detected");
[AppController addAccount:0];
[self close];
}
然而,當我嘗試和新的窗口控制器調用AppController中的addAccount方法,我得到一個「‘AppController的’可能不響應到'+ addAccount'「警告。
這似乎與AppController是一個類而不是對象實例化有關,因爲AppController中的方法稱爲-addAccount(而不是在警告中報告的+ addAccount)。事實上,如果我將目標方法的名稱更改爲+ addAccount而不是-addAccount,則不會顯示警告(但程序在執行時會崩潰)。
鑑於我實際上並沒有自己實例化AppController(我猜這在NIB啓動過程中會以某種方式發生),有沒有人有任何想法可以將數據發送到AppController方法?通知看起來像是矯枉過正...
非常感謝。
非常感謝。我讀了所有的鏈接。 根是AppController是一個類,我沒有實例化,但IBuilder指向(IBAction)s。所以我沒有辦法指向AppController在實例化時生成的實例。 通知工作。有一種更簡單的方法嗎?即使Hillegass在他的章節中使用通知。人們必須從許多應用程序的二進制窗口獲取數據,所以這一定是常見的? 我對共享實例不熟悉,並且很難查找某些文檔。你知道有任何可能的幫助嗎?如下所示,我嘗試了[self addAccount]沒有運氣。 再次感謝。 – 2009-12-24 20:02:10
您可能可以使用[NSApplication sharedApplication],它是應用程序委託的共享實例。但我認爲使用通知是在這裏做的正確的事情。 – 2009-12-25 10:14:39
今天得到的通知沒有問題。謝謝。 – 2009-12-30 01:37:39