通过Child NSView / ViewController访问NSWindow的Element

时间:2012-04-12 06:09:27

标签: objective-c interface-builder nsview nswindow

是否可以从子NSViewController访问NSWindowController的元素?

基本上我有一个NSProgressIndicator旋转在NSWindow的底角。这是有效的,因为我的WebView在我的NSWindowController而不是我的NSViewController。

我想现在打破逻辑,但我无法理解如何从我的View Controller访问这些元素。

谢谢!

1 个答案:

答案 0 :(得分:1)

您无法将插座从一个NIB连接到另一个NIB中的对象,并且希望这样做表明您的设计存在问题。如果视图与窗口中的其他内容紧密相关,则可能不应将其分离为不同的NIB。

当一个视图作为一个独立的单元有意义时,它应该只进入一个单独的NIB。它应该代表并操纵它的控制器representedObject而不是更多。控制器可能有一个委托,它会告知正在做什么,并要求做出自定义决策。

如果采用这种设计,也许你可以继续使用单独的NIB。也许窗口会引用一些模型对象。它将配置视图控制器以将该模型对象用作其表示的对象。也许进度指示器将绑定到同一个模型对象。然后,当视图操纵其表示的对象时,间接也会影响进度指示器。

另一种选择是窗口控制器将自己设置为视图控制器的委托,并且视图控制器可以在适当的位置调用它以通知视图中发生的事情。然后,窗口控制器可以执行适合于进度指示器或视图外部窗口中的其他内容的任何操作。这个假设的委托是你必须添加到视图控制器类的东西,你设计它的协议。