2013-04-16 78 views
0

在我的可可OS X應用程序,我有一個WindowController與廈門國際銀行文件,兩個ViewControllers與廈門國際銀行的文件,我在WindowController,凡添加了一個自定義視圖我通過在繼續或下一個按鈕中單擊時刪除和添加這些視圖來交換這兩個子視圖。訪問windowController的按鈕從子視圖

[[theViewController view] removeFromSuperview]; 
self.theViewController = [[WelcomeInstallViewController alloc] initWithNibName:newView bundle:nil]; 
[innerInstallerView addSubview:[theViewController view]]; 
[[theViewController view] setFrame:[innerInstallerView bounds]]; 

現在這些意見我有一個按鈕,需要關閉在WindowController.I繼續按鈕都看着NSNotificationCenter,這是我的第一臺Mac,可可,Objective C的應用程序。我應該使用NSNotificationCenter嗎?我很困惑,並沒有正確理解。

enter image description here

回答

1

有很多方法對皮膚的貓..

最簡單的方法將包括增加一個出口,以你的NSWindowController和鏈接按鈕,在Interface Builder是插座,然後處理按鈕在任何需要的條件下啓用。

通知是鬆散耦合應用程序組件的一種好方法,例如,以防窗口控制器不啓動會觸發按鈕禁用/啓用自身的狀態更改。

其他可能性包括NSUserInterfaceValidations,可可的專用機構(協議)來..

允許的用戶界面元素的靶,諸如菜單項或工具欄項來決定是否將用戶界面元素應該被啓用。

+0

但操作(按鈕觸發)必須來自其中一個子視圖,然後它將禁用windowController中的按鈕。 –

0

鑑於類似的設計要求(多個可加載的XIB),我已經使用NSViewController範例來允許將邏輯附加到我加載到主視圖中的子視圖。在這種情況下,我將創建一個NSViewController子類,它具有bool屬性(我們稱之爲canContinue),我將從主視圖按鈕綁定到所有者的subview.canContinue

如果你這樣做,主視圖將不得不加載視圖控制器(這將負責加載XIB),當你帶入每個單獨的子視圖,然後確保分配subview屬性在所有者指向您加載的NSViewController