0
我有一個兩個Windows應用程序。第一個是默認窗口。第二個是使用定製控制器創建:可可控制器問題
CCCVentanaBloqueo *ctrl = [[CCCVentanaBloqueo alloc] initWithWindowNibName:@"VentanaBloqueo"];
CCWVentanaBloqueo *ventana = (CCWVentanaBloqueo*)[ctrl window];
塔納包含經由的XCode IB連接到一個CCCVentanaBloqueo控制器出口一個標籤。如果我嘗試通過CCCVentanaBloqueo控制器插座從主窗口嘗試兩次修改該出口,則不會成功。
我可以看到,outlet有零價值。我還可以看到,當[ctrl窗口]行被執行時,兩個對象被創建(兩個調用awakeFromNib函數)CCCVentanaBloqueo。
我想* ctrl引用錯誤的控制器,但我不知道爲什麼兩個控制器被創建。
你知道爲什麼嗎?從主窗口控制器更改不主窗口的任何其他方式?
使用應用程序委託和文件所有者之間的區別是什麼? – LooPer 2011-04-03 16:32:07
文件的所有者是代理對象,通常代表您選擇加載NIB的控制器。主窗口文件的所有者是NSApplication,它實際上並不關心應用程序中的消息委託(儘管它擁有appDelegate,它具有)。另一方面,appDelegate位於應用程序的頂部,用於將消息委託給應用程序的各個組件。 – 2011-04-04 00:08:48
在標準的可可應用程序模板中,主窗口有一個appDelegate對象,這意味着由於主窗口將與應用程序的幾乎所有組件交互,因此可能需要訪問最高級別的消息委派。因此,在這種情況下,您將聲明第二個窗口的控制器爲appDelegate的實例變量和屬性,以便您可以在需要時始終發送消息。 – 2011-04-04 00:10:05