2011-12-26 58 views
2

我有一個NSViewController管理NSTableView,發現NSViewControllerrepresentedObject性質,但它不是一個IBOutlet,我不能約束的NSTableViewdataSource到的NSViewControllerrepresentedObject財產界面構建器。 representObject屬性如何被假設使用?有沒有正確使用的例子?NSViewController的正確使用representedObject

回答

3

representedObject屬性應該設置爲位於nib之外的對象,例如文檔,其他模型控制器或模型對象。筆尖上的東西應該從VC或VC的representedObject獲得數據。

+0

嗯,從由nib初始化的對象中獲取對ViewController的引用的最佳方式是什麼? (換句話說,你如何從文件的內部代碼獲取文件的所有者? – Tony 2011-12-27 01:58:08

+0

@Tony:通過連接插座或設置綁定,爲他們提供參考。 – 2011-12-27 02:28:07

1

我知道這是一個古老的話題,但我想我會加入它,因爲我對representObject做了相當多的研究。希望這可以幫助!

representedObject是視圖應該表示的一些AnyObjectNSObject)的引用。

它不是對象的副本,而是它的一個引用(無論是在斯威夫特和Objective-C)

在理想情況下,如果有問題的觀點是頁面出了「聯繫人應用程序」。該頁面represents a contact然後通過實例化它的對象將代表的對象應該設置爲fooContactfooContact是對相關聯繫人實例的引用。

它不必由實例化類來設置,但是我個人覺得它更清晰。

我一般避免試圖覆蓋representedbject的默認getter/setter方法和在類即

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

由另一變種引用它保持弱引用將避免參考週期。

+1

你不能像這樣使用弱引用,你不能返回所有的代碼都可以被扣除,以返回representationObject到文檔?weak var document:Document?{ returnrepresentObject as?Document } – Andy 2015-08-30 13:06:40