【发布时间】:2012-02-04 22:17:02
【问题描述】:
我正在构建一个带有一个带有 xib 的主窗口控制器的可可应用程序。该 xib 包含许多自定义视图类。我想在 xib 中添加一个 NSViewController,但我遇到了一些麻烦。
在界面生成器中,我可以将 NSViewController 拖到 xib 中,为其分配自定义控制器类,并将其视图分配给 xib 中的适当视图。这就是问题所在:initWithNibName:Bundle: 或 loadView 都没有被调用。
我错过了什么?
编辑: 人们似乎误解了这个问题,所以我会澄清一下。
窗口已经有一个视图控制器。我想要做的是将单独的视图控制器分配给几个子视图。我需要知道如何将我的NSViewController 子类与适当的NSView 子类(它是主窗口的子类)相关联。
或者换句话说,我正在尝试使用多个NSViewController 子类来控制单个.xib 文件中的许多不同的自定义视图(每个视图)。这些控制器和子视图有自己的 .xib,它们最终应该在同一个窗口中可见。
【问题讨论】:
-
你从什么引用
NSViewController? -
我将它添加到 xib 文件中(拖放),然后将其类分配给我使用 IB 创建的类。右侧有一个选项卡,可让您设置其“文件所有者”。
-
对,但是如果你只是将一个对象放在
xib中的任何位置,它不一定会渲染,尤其是像NSViewController这样的非视图对象。您必须从代码中实例化NSViewController(在这种情况下,您的xib将保持对它的引用为File's Owner),或者将其设置为ApplicationDelegate的window的rootViewController。 -
我正在使用我的答案中描述的方法在我的应用程序中这样做。一个“顶级控制器”和几个“子控制器”。我使用我的应用中的示例编辑了我的答案。
标签: objective-c cocoa nsviewcontroller