Window Controller Split View Controller Table View Controller Text View Controller
My Core Data模型包含一个Chapter实体,它包含两个属性:title和contents.我希望表视图显示每个章节标题.文本视图显示所选章节的内容.
如果我使用的是xib文件,我会在xib文件中添加一个数组控制器.我将数组控制器绑定到File的所有者以访问我的NSPersistentDocument子类.我将表视图绑定到数组控制器的arrangeObjects属性,并将文本视图绑定到数组控制器的选择.
但随着故事板,事情变得更加复杂.我可以向表视图控制器添加一个数组控制器,将表视图绑定到数组控制器,并在表视图中显示章节标题.但是文本视图控制器无法绑定到该阵列控制器,因为阵列控制器位于另一个场景中.
如何在Interface Builder中添加数组控制器,以便表视图控制器和文本视图控制器都可以访问它并绑定到它?
解决方法
控制器.以下是带有NSWindowController的storyboard应用程序的示例,该应用程序具有内容视图控制器,该控制器是具有两个子视图控制器的NssplitViewController(A Master / Detail设置):
class Document: NSDocument { var dataSource: DataSource? = DataSource() ... } class DataSource: NSObject,NSCoding { var items: [Item] = [] var selectionIndexes: NSIndexSet = NSIndexSet() ... } class WindowController: NSWindowController { override var document: AnyObject? { didSet { if let document = self.document as? Document { self.contentViewController?.representedobject = document } } } } class SplitViewController: NssplitViewController { override var representedobject: AnyObject? { didSet { for viewController in self.childViewControllers as! [NSViewController] { viewController.representedobject = representedobject } } } }
诀窍是将representObject绑定到storyboard中每个降序视图控制器的NSArrayController.您需要仅绑定contentArray,但也需要绑定selectionIndexes.
结果是两个降序NSArrayControllers上的selectionIndexes保持同步,因为它们通过中央数据源(上例中的DataSource子类)绑定.
为了使这一点更加清晰,我创建了一个示例项目,在此处演示:https://github.com/acwright/StoryboardBindingsExample
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。