定製單元格
自定義 UITableViewCell
可以實現非常強大,動態和響應的介面。通過廣泛的自定義和結合其他技術,你可以執行以下操作:更新特定屬性或介面元素,因為它們更改,動畫或繪製單元格中的內容,在使用者滾動時有效地載入視訊,甚至在從下載時顯示圖片網路。這裡的可能性幾乎無窮無盡。下面是一個自定義單元格外觀的簡單示例。
本節將介紹基礎知識,並希望將其擴充套件到詳細的更復雜的過程,如上所述。
建立自定義單元格
首先,建立一個新的 UITableViewCell
子類(在 Xcode 中建立一個新的 Cocoa Touch 類,並將 UITableViewCell
設定為超類)。下面是子類化後程式碼的樣子。
迅速
class CustomTableViewCell: UITableViewCell {
static var identifier: String {
return NSStringFromClass(self)
}
var customLabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
customLabel = UILabel(frame: CGRect(x: 0, y: 0, width: contentView.frame.width, height: contentView.frame.height))
customLabel.textAlignment = .center
contentView.addSubview(customLabel)
}
}
(可選)在建立新檔案時選中“還建立 XIB 檔案”以使用 Interface Builder 進行自定義。如果你這樣做,請將 customLabel
連線為 @IBOutlet
在包含 tableView
的 UIViewController
中,註冊新的自定義單元格類(見下文)。請注意,只有在表檢視的介面中沒有使用 Storyboard 設計單元格時,才需要這樣做。
迅速
override func viewDidLoad() {
super.viewDidLoad()
// Register Cell Class
tableView.register(CustomTableViewCell.self, forCellReuseIdentifier: CustomTableViewCell.identifier)
}
如果你選擇使用 XIB 檔案,則改為:registerNib
:
迅速
// Register Nib
tableView.register(UINib(nibName: CustomTableViewCell.identifier, bundle: nil), forCellReuseIdentifier: CustomTableViewCell.identifier)
現在你的 tableView
知道你的自定義單元格,你可以在 cellForRowAtIndexPath
中將其出列:
迅速
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// Load the CustomTableViewCell. Make sure the identifier supplied here matches the one from your cell
let cell: CustomTableViewCell = tableView.dequeueReusableCellWithIdentifier(CustomTableViewCell.identifier) as! CustomTableViewCell
// This is where the magic happens - setting a custom property on your very own cell
cell.customLabel.text = "My Custom Cell"
return cell
}