我有一个管理向下钻取层次结构的 NSSplitView
。父/左侧显示组,而子/右侧接收组选择已更改的通知,并更新以显示子项目。
但是:当使用 Storyboard创建 NSSplitView
时,会创建 3 个场景:一个用于 Split View本身,一个用于每个右/左 NSViewController
个实例。
这里的问题是我有两个 Controller 也充当 NSTableViewDataSource
项,parent Controller 应该有一个 IBOutlet
来子 Controller ,以便它可以提供选择已更改的直接通知。
但是!因为这些 Controller 在不同的场景中,我无法连接它们。我也不能将它们都移动到 Split View的父场景中,因为它们将无法访问 NSTableView
socket 。 (表格也不会将 Controller 引用为委托(delegate)/数据源。)
我需要在这里使用NSNotification
吗?它看起来如此间接和空泛,而且我还没有在 Mac 上找到基于 segue 的方法。
最佳答案
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/