是否可以从子 NSViewController 访问 NSWindowController 的元素?
本质上,我有一个 NSProgressIndicator,它在 NSWindow 的底角旋转。这是因为我的 WebView 在我的 NSWindowController 而不是我的 NSViewController 中。
我现在想打破逻辑,但我无法理解如何从我的视图控制器访问这些元素。
谢谢!
是否可以从子 NSViewController 访问 NSWindowController 的元素?
本质上,我有一个 NSProgressIndicator,它在 NSWindow 的底角旋转。这是因为我的 WebView 在我的 NSWindowController 而不是我的 NSViewController 中。
我现在想打破逻辑,但我无法理解如何从我的视图控制器访问这些元素。
谢谢!
您无法将一个 NIB 的插座连接到另一个 NIB 中的对象,这样做表明您的设计存在问题。如果视图与窗口中的其他事物密切相关,那么它可能不应该被分离到不同的 NIB 中。
只有当视图作为一个独立的单元有意义时,它才应该进入一个单独的 NIB。它应该代表和操纵它的控制器,仅此representedObject
而已。控制器可能有一个委托,它通知正在做什么并要求做出定制决策。
如果您采用这种设计,也许您可以继续使用单独的 NIB。也许窗口会引用某个模型对象。它将配置视图控制器以使用该模型对象作为其表示的对象。也许进度指示器会绑定到同一个模型对象。然后,当视图操作其表示的对象时,它也会间接影响进度指示器。
另一种选择是让窗口控制器将自己设置为视图控制器的委托,并且您的视图控制器可以在适当的点调用它以通知它视图中发生的事情。然后窗口控制器可以对进度指示器或视图之外的窗口中的其他内容执行任何适当的操作。这个假设的委托是你必须添加到视图控制器类的东西,你需要设计它的协议。