Cocoa 在NIB之间共享NSArrayController
我正在构建一个基于核心数据的iTunes应用程序,它在主窗口中有一个Cocoa 在NIB之间共享NSArrayController,cocoa,core-data,cocoa-bindings,nsarraycontroller,Cocoa,Core Data,Cocoa Bindings,Nsarraycontroller,我正在构建一个基于核心数据的iTunes应用程序,它在主窗口中有一个NSTableView,允许用户在表视图中选择项目并执行“获取信息”,就像在iTunes中一样。目前,我正在处理单一项目获取信息窗口,当用户在主窗口(位于MainMenu.xib)中选择单个项目并按下Cmd-I时,该窗口将显示。这将打开单一项目获取信息窗口(位于SingleItemGetInfo.xib) 主窗口中的表视图是通过绑定到NSArrayController来填充的。如果我将NSArrayController放入Sin
NSTableView
,允许用户在表视图中选择项目并执行“获取信息”,就像在iTunes中一样。目前,我正在处理单一项目获取信息窗口,当用户在主窗口(位于MainMenu.xib
)中选择单个项目并按下Cmd-I时,该窗口将显示。这将打开单一项目获取信息窗口(位于SingleItemGetInfo.xib
)
主窗口中的表视图是通过绑定到NSArrayController
来填充的。如果我将NSArrayController
放入SingleItemGetInfo.xib
文件中,我知道这将是NSArrayController
的另一个实例
那么,将“单个项目获取信息”窗口中的字段绑定到用户在主窗口的表视图中所做的选择的正确方法是什么
MainMenu.xib's Array Controller bindings:
Managed Object Context: AppDelegate.self.managedObjectContext
MainMenu.xib's Table View bindings:
Content: Array Controller.arrangedObjects
Selection Indexes: Array Controller.selectionIndexes
Sort Descriptors: Array Controller.sortDescriptors
这与主视图和详图视图位于同一窗口中时的工作方式基本相同。主要区别在于,您需要将细节xib中阵列控制器的
选择
绑定到主阵列控制器的选择
这取决于你如何组织你的应用程序,以及你如何实现这一点。如果两个视图都由同一个对象运行,则可以将主阵列控制器设置为连接到控制器的插座(@property IBOutlet NSArrayController*masterArrayController;
)。然后,在详图xib中,可以将详图阵列控制器的选择绑定到主阵列控制器的选择
如果每个视图都有自己的控制器,您也可以考虑将托管对象从主视图传递到详细视图。然后可以绑定到xib文件中托管对象的每个属性(即绑定到文件的所有者self.detailObject.fullName)。如果您传递一个引用,我认为所有的更改都会返回到托管对象上下文中