2016-04-25 53 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

相关问题