【问题标题】:Access NSWindow's Element via Child NSView/ViewController通过 Child NSView/ViewController 访问 NSWindow 的元素
【发布时间】:2012-04-15 03:39:36
【问题描述】:

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

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

我现在想打破逻辑,但我无法理解如何从视图控制器访问这些元素。

谢谢!

【问题讨论】:

  • 您的问题令人困惑。 NSWindowController 的“元素”是什么意思? WebView 不在NSWindowControllerNSViewController 中。您的意思是在由其中一个控制器拥有和加载的 NIB 中吗?你说“这行得通,因为……”。 “这”指的是什么?这里的“作品”是什么意思?
  • 我希望能够将我窗口的 xib 中的某些东西(在本例中为 NSProgressIndicator)连接到来自我的 ViewController 的 IBOutlet。

标签: objective-c interface-builder nsview nswindow


【解决方案1】:

您无法将一个 NIB 的插座连接到另一个 NIB 中的对象,这样做表明您的设计存在问题。如果视图与窗口中的其他事物密切相关,也许它不应该被分离到不同的 NIB 中。

仅当视图作为一个独立的单元有意义时,才应进入单独的 NIB。它应该代表和操纵其控制器的representedObject,仅此而已。控制器可能有一个委托,它通知正在执行的操作并要求做出自定义决策。

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

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

【讨论】:

    猜你喜欢
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 2017-12-16
    • 2015-06-06
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    相关资源
    最近更新 更多