【发布时间】:2014-10-30 07:02:03
【问题描述】:
我正在努力解决在单独文件中的视图控制器之间使用 Cocoa 绑定的案例。 我检查了一些链接以获得灵感,但仍然没有。我觉得最好发一个 问题并让我休息一下......
类似主题: Binding selection across multiple view controllers in a single window interface
Sharing an NSArrayController between multiple views in separate NIB files
我有一个主控制器MainViewController.m/.h/.xib 和两个自定义视图。
还有一个单独的视图控制器SecondViewController.m/.h/.xib。它的 xib 基本上包含一个表视图,以及一个绑定到表视图列的 ArrayController。这适用于绑定和选择等。
现在回到我的主控制器,我想从SecondViewController 访问表视图的选择索引。
到目前为止我的尝试
-
在我的主 XIB 中,我在 IB 中创建了一个 ViewController,并将自定义类和 nib 文件设置为
SecondViewController。 -
在
SecondViewController的 XIB 中创建了一个 ArrayController,其 contentArray 设置为 KVC 列表属性“lists”。如上所述,这会在表格视图中正确显示内容。问:如何在 MainViewController 中设置绑定,以便可以访问在
SecondViewController中选择的对象?因为我想从我的主视图控制器中将该对象的详细信息绘制为子视图。一种在 Cocoa 教程中描述的主从界面。
【问题讨论】:
-
在 MainVC 中创建一个指向 SecondVC 实例的 secondVC 出口。在 SecondVC 中有一个指向 SecondVC 中的表视图的 tableView 出口。在 MainVC 中,使用 secondVC.tableView.selectionIndex 的键路径...对吗?那是很普通的东西,所以我想知道你是否想做一些更复杂的事情。
-
嗯,也许这很容易。所以你的意思是我需要在 secondVC 中的 tableview 插座以便稍后在我的 mainvc 中公开它?顺便说一句,没有 selectionIndex,只有 selectedRowIndexes - 这就是你的意思?
-
是的,语义。但是只要您的 MainVC 做一些工作来跟踪 secondVC 实例(避免使用 nil 指针),我不明白为什么您不能通过分层键路径进行绑定。
-
@stevesliva 我在一个沙盒项目中试过这个,mainVC 中的一个阵列控制器和第二个阵列控制器通过插座连接。我得到的只是表视图行中的左括号,用于通过插座(来自第二个 vc)连接的阵列控制器。主阵列控制器没问题。
-
我认为您不应该绑定或观察
selectedRowIndexes- 这是NSTableView属性。可能,您应该设置并注意对NSArrayController的 Selection Indexes 绑定的更改,为您的第二个表格视图提供内容(请参阅下面的答案)。
标签: objective-c cocoa cocoa-bindings