正确使用NSViewController表示对象

时间:2011-12-26 21:34:29

标签: cocoa nsviewcontroller

我有NSViewController管理NSTableView并注意到NSViewControllerrepresentedObject属性,但它不是IBOutlet而我无法绑定接口构建器中dataSource NSTableView representedObject NSViewController属性{{1}}。如何使用表示对象属性?有没有正确使用的例子?

2 个答案:

答案 0 :(得分:4)

representedObject属性应设置为位于nib外部的对象,例如文档,另一个模型控制器或模型对象。 nib中的内容应该从VC或VC representedObject获取数据。

答案 1 :(得分:0)

我知道这是一个古老的主题,但我想我会加入它,因为我对representObject进行了大量的研究。希望这有帮助!

representedObject是对视图应代表的某些AnyObjectNSObject)的引用。

它不是对象的副本,而是对它的引用(在Swift和Objective-C中)

理想情况下,如果相关视图是一个页面输出"联系应用程序"。此页面represents a contact然后,由实例化它的对象将设置为fooContactfooContact是对相关联系人实例的引用。

它不必由实例化类设置,但我个人觉得它更清晰。

我通常避免尝试覆盖所表示的对象的默认getter / setter,并通过类中的另一个var引用它,即

weak var document: Document{
    if let docRef = self.representedObject as Document {
        return docRef
    }
    return nil
}

保持弱参考将避免参考周期。