2016-01-07 36 views
2

雖然我讀蘋果的TableViewSuite sample code,我找到了一個有點混亂:「BOOL突出顯示」屬性在UIView而不是UITableViewCell?

APLTimeZoneView是在APLTimeZoneCellcontentView一個UIView。然而,有一個名爲

@property (nonatomic, getter=isHighlighted) BOOL highlighted 
APLTimeZoneView

財產,顯然屬性的定製的setter曾經選擇行時獲取調用。

我的問題是,爲什麼在APLTimeZoneView而不是APLTimeZoneCell高亮顯示的屬性?我檢查了API文檔,似乎UIView中沒有此類屬性,僅在UITableViewCell中。爲什麼只要選擇一行,setter就會被調用來設置highlighted爲true?

回答

0

Table View Programming Guide,有一個非常小紙條,上面寫着:

內容被自動選擇,如果子視圖工具(如適用)的highlighted屬性的存取方法。

注意:爲了實現斯威夫特同樣的事情,你就需要提供一個計算的屬性,以便您可以註釋都setget具體@objc名稱:

private var _highlighted: Bool = false 
var highlighted: Bool { 
    @objc(isHighlighted) get { return _highlighted } 
    @objc(setHighlighted:) set { 
     _highlighted = newValue 

     // Now configure the view based on the new value... 
    } 
} 
+0

謝謝@jtbandes –

相關問題