如何让自定义视图控制器将其视图加载到另一个笔尖的占位符中?

时间:2013-12-19 08:36:19

标签: cocoa xib nsview nib nsviewcontroller

因此,使用xib / nib创建自定义NSViewController子类。 然后在应用程序的主nib中,从对象库中添加一个NSViewController对象,将该类设置为自定义视图控制器类。 在自定义视图控制器的app委托中创建IBOutlet

向窗口添加NSView对象。 将视图控制器的视图设置为窗口中的NSView

当我建立&运行时,视图是主笔尖中的通用视图,而不是视图控制器的笔尖...

如果认为应该让这个过程发挥作用还需要什么? 我认为这应该从自定义视图控制器的笔尖填充视图(和任何子视图)。

我知道如何在代码中执行此操作,但它确实看起来像锅炉板。 (特别是添加了自动布局约束。)

请告诉我,我错过了一些非常明显的东西。

1 个答案:

答案 0 :(得分:6)

当您将view的{​​{1}}出口连接到空的通用容器视图时,它将在运行时用空视图替换从NIB加载的实际视图。

不幸的是,没有办法完全通过使用Interface Builder和outlet来做你所要求的。最简单的替代方法:

NSViewController对象添加到主XIB文件,并在“属性”检查器中设置 Nib名称 Nib Bundle ,但将视图出口设置为空容器视图。

向应用程序委托(或XIB中公开的其他控制器类)添加属性,以便为视图控制器和容器视图创建NSViewController。例如:

IBOutlet

将XIB中的这些插座连接到视图控制器和容器视图。现在,在运行时,将视图控制器的视图添加为容器视图的子视图:

@property (nonatomic, strong) IBOutlet NSViewController *viewController; // view controller in XIB
@property (nonatomic, weak) IBOutlet NSView *containerView;