将NSViewController与自定义视图一起使用

时间:2016-04-25 17:04:27

标签: macos cocoa nsview nsviewcontroller

我有一个主.xib视图,其中部分视图由自定义视图组成。与此同时,我还创建了单独的.xib子视图(以及它们各自的.h和.m文件)。然后将这些自定义类连接到主.xib

中的自定义视图

这个设置工作正常,但是我希望有一些NSViewController控制每个不同的自定义视图。建议的方法是什么?

EG。 Main.xib>包含“自定义视图”>每个都使用NSView自定义类,并在其自己的.xib中设计

NSViewController类将响应其中一个自定义视图中发生的事件,而不是与Main.xib绑定的NSViewController

2 个答案:

答案 0 :(得分:1)

我最终创建了带有XIB文件的NSViewControllers,而不是我以前的自定义视图。

然后,我为每个自定义视图创建了NSBox组件。我通过IBOutlet将这些连接到主NSViewController。

最后,我通过IBOutlets将每个自定义视图附加到专用的NSBox,如下所示:

- (void) awakeFromNib{
   [super awakeFromNib];


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

答案 1 :(得分:0)

我倾向于做的只是创建一个新的NSViewController子类并选择“Create XIB”选项。

从那里,我实例化视图控制器子类并将其添加到代码中的视图层次结构中。

这并不完全符合您的建议,但它确实使模块化/更容易测试。缺点是它挑战父母和孩子之间的约束。我也倾向于手动执行此操作,或者将子控件的视图添加到NSStackView中,这会给你一些约束。

可能有更好的方法,但这就是我们在multi-xib项目中使用的方法。