2016-04-25 81 views
1

我有一個主要的.xib視圖,其中部分視圖由自定義視圖組成。同時,我還創建了單獨的.xib子視圖(以及它們各自的.h和.m文件)。這些自定義類然後連接到主.xib中的自定義視圖在自定義視圖中使用NSViewController

此設置工作正常,但我想有一些NSViewController(s)控制每個不同的自定義視圖。推薦的方法是什麼?

例如, Main.xib>包含'自定義視圖',每個都使用NSView自定義類,並在它自己的設計中.xib

NSViewController類將響應發生在這些自定義視圖之一中的事件,而不是綁定到Main.xib的NSViewController

+0

我想你可以通過子類NSViewController,並把所需數量的新視圖控制器在做此主要的xib文件(就像應用程序委託)。然後你可以在窗口中用圖形將它們與相關的自定義視圖掛鉤,並讓它們在awakeFromNib上加載它們自己關聯的xib。您可以通過您的主視圖控制器上的插座來堅持這些子控制器 – pco494

回答

0

我已經結束了用XIB文件創建NSViewControllers而不是之前的自定義視圖。

然後我爲每個自定義視圖創建了NSBox組件。我通過IBOutlet(s)將它們中的每一個連接到主要的NSViewController。

最後,我連着通過IBOutlets每個自定義視圖專用NSBoxes如下:

- (void) awakeFromNib{ 
    [super awakeFromNib]; 


    //instantiate custom view controller 
    CustomViewController* customViewController = [[CustomViewController alloc] initWithNibName:@"CustomViewController" 
                bundle:nil]; 
    [self.customNSBoxView setContentView:[customViewController view]]; 
} 
0

我只想創建一個新的NSViewController子類並選擇'Create XIB'選項。

從那裏,我實例化視圖控制器子類並將其添加到代碼中的視圖層次結構。

這並不完全符合你的建議,但它確實使事情更模塊化/更易於測試。不利的一面是,它在設置家長和孩子之間的限制方面頗具挑戰性。我也傾向於手動執行此操作,或者將子控制器的視圖添加到NSStackView中,這會給您一些限制。

可能有更好的方法,但這是我們在我們的multi-xib項目中使用的。

+0

這正是我們在此項目之前所做的,但正如您所提到的,它使得在Interface Builder中設置視圖之間的約束變得更加困難。 – Keith

相關問題