2010-06-02 40 views
2

我正在開發使用iTunes風格的源列表的Cocoa桌面應用程序:源列表中的不同元素會導致主內容區域顯示不同的視圖。如何顯示從單獨的NIB文件加載的子視圖

內容區域完全填滿(垂直)NSSplitView;左側是NSOutlineView源列表。當用戶選擇左側的項目時,相關的視圖出現在分離器的右側。

通過將所有內容放在一個NIB文件中,並將無邊界NSTabView放在分離器的右側,我可以使其工作得很好;切換視圖,我只需要更改選定的選項卡。但是將所有視圖放在一個NIB中是不好的做法,所以我試圖將每個子視圖移動到它們自己的NIB文件中。

我的大部分這個過程中的一個不錯的主意 - 我創建了一個NSViewController子類每個視圖(EntityDetailViewControllerGroupDetailViewController,等等),設置每個新NIB的文件所有者的相關負責人類,在每個NIB中設置view連接,並重新設置綁定。我不知道的是如何實際更改屏幕上顯示的子視圖。

我試過在右邊使用默認通用NSView併發送它addSubview:消息;我已嘗試連接到它作爲第一個子視圖,並呼籲

NSView *newSubview = /* get subview from the new subview controller */ 
[[subview superview] replaceSubview:subview with:newSubview]; 
[self setSubview:newSubview]; 

但是,一切只是留下空白空白。如何顯示從單獨的NIB加載的子視圖?

+0

馬庫斯,你能得到這個工作? – tofutim 2014-02-20 20:53:25

回答

0

您的一般做法聽起來很合理。你是否已驗證從加載視圖控制器的newSubview是非零?在添加到視圖層次結構之前和之後,newSubview的框架看起來是否正確?最後,你在什麼時候使用replaceSubview:的代碼?它應該在awakeFromNib或更高版本中。

相關問題