2012-01-25 79 views
1

非常感謝這個網站。最近很多帖子都幫了我。響應窗口關閉AppDelegate

這個窗口的問題似乎很簡單,但我不能找到一個簡單的參考,以解決我的需要。我正在構建一個管理打印機的簡單應用程序。主屏幕的桌面視圖由從杯子服務器拉出的一組數據驅動。基本上它顯示了該計算機上已安裝的打印機。有兩個子窗口。每個都有自己的窗口控制器和筆尖文件。爲了清楚起見,我會稱它們爲子筆尖或子窗口控制器。每個人都會做一些不同的事情,但會影響系統打印機。我想確保當子窗口關閉並將控制返回到主屏幕時,主屏幕窗口(由AppDelegate控制)通過重新加載tableview(用打印機更新操作系統級別的任何更改)來響應。

在較高的水平,我不知道如何將消息發送回的AppDelegate當我通過它運行的子窗口很是控制器。舉個例子,假設在子窗口筆尖上按下了一個按鈕,並且您想修改在AppDelegate中控制的ivar?似乎這應該很簡單,但似乎父AppDelegate的對象模型不可用。

在一個較低的水平,我不知道如何使AppDelegate中意識到窗口關閉。我很幸運,通過windowWillClose通知讓子窗口控制器知道它正在關閉 - 當我將子筆尖的代表設置到子窗口控制器時,這很有用。但是父控制器AppDelegate仍然不知道,我不知道如何告訴子窗口控制器的AppDelegate做些什麼。

是否通過對象消息使父AppDelegate知道?如果是這樣,怎麼樣?子筆尖可以擁有不同的所有者和代表嗎?是否有可能將第二個筆尖設置爲其所有者的控制器,並將其作爲委託指向AppDelegate?我嘗試過,但無法弄清楚如何連線。

概括起來講,我怎麼可以在AppDelegate的動作我的子筆尖後通過子控制器關閉。 任何幫助將不勝感激。

回答

3

您可以使用一個通知,告知您的AppDelegate採取行動。如果需要,您可以製作自己的通知,或使用WindowWillClose通知等現有通知。您只需告訴大家,AppDelegate的希望收到消息,這樣的NSNotification中心:

[[NSNotificationCenter defaultCenter] addObserver:myAppDelegate 
    selector:@selector(subWindowClosed:) 
    name:NSWindowWillCloseNotification 
    object:subWindow] 

這將調用您的-subWindowClosed:在應用程序的委託方法時,子窗口關閉。

+0

謝謝。我可能會執行這個錯誤。我在創建控制器對象之後但在調用showWindow方法之前將此代碼添加到了appdelegate中。通知不會運行。有關代表如何設置在子筆尖上的技巧? – CocoaEv

+0

永不言棄:)非常感謝。我將其移入我的初始化方法中,併爲每個子窗口設置通知,並且它工作得很好。真棒!謝謝! – CocoaEv

+0

@CocoaEv這正是我想要做的,但無濟於事,你能解釋一下你準確把握這一點,以及你如何連接它。謝謝。 –