2011-02-02 82 views
3

我的第一個ObjC /可可應用程序..我很困惑。幫助理解多控制器可可應用程序

我正在爲我們的大學學生寫一個狀態項應用程序來安裝/卸載校園打印機。他們可以在狀態項目的菜單中配置應該可以輕鬆訪問的最喜歡的打印機列表。到目前爲止,我已經在菜單中的一切工作。現在我正在嘗試編寫他們可以管理他們最喜歡的列表的偏好窗口。

我有一堆Printer對象存儲在一個NSArray中的一個單獨對象PrinterData。謂詞方法允許我獲取最喜歡的數組,而不是最喜歡的打印機對象。

PrinterController在狀態項目菜單中繪製Printer對象。

PreferenceController有一個帶多個視圖(工具欄項目)的筆尖,其中包括收藏夾的視圖。我決定以分體式風格顯示所有打印機,並在左側的NSTableView中顯示它們的名稱,並在右側顯示其他數據。我還會在右側放置一個複選框來控制它是否是最喜歡的打印機,並希望使用通知來重繪狀態項目菜單。也許一些粗體字體綁定在左邊..

我將TableView內容綁定到ArrayController以顯示PrinterData中的對象,該對象也是nib中的對象。

我可以批評我如何組織這個?對於任何方面的建議?

回答

1

您可以使用NSWindowController來管理多個NSViewController對象。蘋果有一個excellent example here,表明MVC模式。

繼蘋果公司的例子,任何視圖控制器中你可以切換到另一個視圖控制器是這樣的:

MainWindowController* windowController = [[[self view] window] windowController]; 
[windowController changeViewController:kLoginViewController]; 

基本上你的應用程序代理創建一個窗口控制器,它會爲你想所需的意見視圖控制器有。這樣,如果你需要添加或刪除視圖,這個過程是非常痛苦的。

如果您想訪問多個視圖中的相同數據,您應該查看Core Data Applications。另一種方法是將打印機對象的NSArray存儲在應用程序委託中,並將引用傳遞給訪問對象所需的任何視圖,但我會建議使用該方法的Core Data。

+0

感謝您的建議。切換到同一個窗口中的不同視圖並不是我想要做的,但它應該顯示一些很好的代碼示例。 – joraff 2011-02-07 20:49:30