我假设您有一个单独的 Nib,命名CustomImageView
为未图示(由 Xcode 自动创建的)。在这种情况下,您可以将控件和绘图代码添加到该单独 Nib 中的视图中。要将视图控制器的视图实际添加到窗口中,您必须通过从 AppDelegate 到视图控制器的 IBOutlet 连接以编程方式完成,并在要添加视图时添加以下代码:(通常在applicationDidFinishLaunching:
)
[viewController.view setAutoresizingMask:(NSViewWidthSizable|NSViewHeightSizable)];
[viewController.view setFrame:NSInsetRect([window.contentView bounds], 20, 20)];
[window.contentView addSubview:viewController.view];
这将像您在屏幕截图中一样将其插入并居中。问题在于,通过view
在 MainMenu Nib 中创建连接,您将覆盖单独的CustomImageView
Nib 中的连接。您可以删除窗口中的自定义视图对象...您必须以编程方式添加自定义视图。如果它以这种方式工作会很好,但事实并非如此。
编辑:
这是因为笔尖未归档的顺序。首先实例化 CustomImageView 并建立其所有连接。至此,该view
属性已正确设置。然后 MainMenuview
再次连接属性,覆盖view
单独 Nib 中的属性。现在视图属性设置不正确。这是正常的行为。如果您使用单独的 nib,则必须保持未连接并在代码中添加视图控制器的视图。
另一种方法是不使用单独的笔尖。只需将其从您的项目中删除,设置您的视窗并保持您的连接不变。现在您可以有一个单独的视图控制器来管理它,而无需添加任何代码。如果视图非常复杂,或者你想根据需要延迟加载它,你真的只需要一个单独的 Nib,比如用户可以为主窗口选择不同的视图。