定制单元格
自定义 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
}