objective-c - 使用 Storyboard连接向下钻取的 NSSplitView socket

标签 objective-c xcode macos cocoa storyboard

我有一个管理向下钻取层次结构的 NSSplitView。父/左侧显示组,而子/右侧接收组选择已更改的通知,并更新以显示子项目。

但是:当使用 Storyboard创建 NSSplitView 时,会创建 3 个场景:一个用于 Split View本身,一个用于每个右/左 NSViewController 个实例。

这里的问题是我有两个 Controller 也充当 NSTableViewDataSource 项,parent Controller 应该有一个 IBOutlet Controller ,以便它可以提供选择已更改的直接通知。

但是!因为这些 Controller 在不同的场景中,我无法连接它们。我也不能将它们都移动到 Split View的父场景中,因为它们将无法访问 NSTableView socket 。 (表格也不会将 Controller 引用为委托(delegate)/数据源。)

我需要在这里使用NSNotification吗?它看起来如此间接和空泛,而且我还没有在 Mac 上找到基于 segue 的方法。

enter image description here

最佳答案

Apple 将新的 NSSplitViewController 和 NSTabViewController 类称为容器 Controller 。您可以使用 NSViewController 中的新属性获取对容器内其他 Controller 的引用

@property (readonly) NSViewController *parentViewController
@property (copy) NSArray *childViewControllers

例如,如果您想从父表 Controller 获取对子表 Controller 的引用。在您的父表 Controller viewDidLoad 中,您可以执行以下操作

myChildTableController = [self.parentViewController childViewControllers][1];

或者从你的子表 Controller 反之亦然

myParentTableController = [self.parentViewController childViewControllers][0];

关于objective-c - 使用 Storyboard连接向下钻取的 NSSplitView socket ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25233060/

相关文章:

ios - 从老式结构转移到类

ios - 带有 Objective-C 选择器 'Method()' 的方法 'Method' 与具有相同 Objective-C 选择器的 'Method' 的 getter 冲突

objective-c - 如何通过 iOS 应用程序通过电子邮件发送地址链接,然后在 Google map 中搜索它

ios - 原型(prototype)单元格从 JSON 获取不正确

html - 单击时如何去除图像映射区域的边框轮廓(仅限 OS X Chrome)

swift - 如何快速调用Mac API “Adding a new event”?

ios - 在多个分区中拆分视频

xcode - 恢复到以前的版本 git repo

ios - 应用程序编译并在没有框架的情况下工作

oracle - 在Mac OSX Yosemite上为Docker提供更多交换空间