定製單元格

自定義 UITableViewCell 可以實現非常強大,動態和響應的介面。通過廣泛的自定義和結合其他技術,你可以執行以下操作:更新特定屬性或介面元素,因為它們更改,動畫或繪製單元格中的內容,在使用者滾動時有效地載入視訊,甚至在從下載時顯示圖片網路。這裡的可能性幾乎無窮無盡。下面是一個自定義單元格外觀的簡單示例。

自定義 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

StackOverflow 文件

在包含 tableViewUIViewController 中,註冊新的自定義單元格類(見下文)。請注意,只有在表檢視的介面中沒有使用 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
}