教程很早之前讲到的利用prototype cells创建cell的方法搞的我云里雾里。现在好了,现在在AllListsViewController中创建的方法比较好,纯代码。粘贴如下
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// 执行的时候会不停遍历indexPath更新cell的textLabel和accessoryType
let cell = cellForTableView(tableView)
let checklist = lists[indexPath.row]
cell.textLabel!.text = checklist.name
cell.accessoryType = .DetailDisclosureButton
// This control indicates that tapping the cell allows the user to configure the cell’s contents.
// Configure the cell...
return cell
}
func cellForTableView(tableView: UITableView) -> UITableViewCell{
let cellIdentifier = "Cell"
if let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier){
// Returns a reusable table-view cell object located by its identifier.
// 创建cell的代码
return cell
} else {
return UITableViewCell(style: .Default, reuseIdentifier: cellIdentifier)
// Return Value: An initialized UITableViewCell object or nil if the object could not be created.
}
}
var lists: [Checklist]
required init?(coder aDecoder: NSCoder){
lists = [Checklist]()
super.init(coder:aDecoder)
var list = Checklist(name: "Birthdays")
lists.append(list)
list = Checklist(name: "Groceries")
lists.append(list)
list = Checklist(name: "Cool Apps")
lists.append(list)
list = Checklist(name: "To Do")
lists.append(list)
}
这里主要用到的是tableView.dequeueReusableCellWithIdentifier方法。创建cell的时候,先指定一个cellIdentifier,再用此函数创建cell。 然后重写 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 函数更新cell的内容和样式。