下面的cellForRowAtIndexPath实现是技术上正确的最佳实践方式,考虑到可选项的展开
class MyTableViewController: UITableViewController {
var cell : UITableViewCell?
// other methods here
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
cell = tableView.dequeueReusableCellWithIdentifier("ItemCell")! as UITableViewCell
let myItem = items[indexPath.row]
cell!.textLabel?.text = myItem.name
cell!.detailTextLabel?.text = myItem.addedByUser
return cell!
}
}
答案 0 :(得分:7)
在Swift 2中dequeueReusableCellWithIdentifier
被声明为
func dequeueReusableCellWithIdentifier(_ identifier: String,
forIndexPath indexPath: NSIndexPath) -> UITableViewCell
和cellForRowAtIndexPath
被声明为
func tableView(tableView: UITableView,
cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
你看,没有选项!
代码可以缩减为
class MyTableViewController: UITableViewController {
// other methods here
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("ItemCell", forIndexPath: indexPath)
let myItem = items[indexPath.row]
cell.textLabel?.text = myItem.name
cell.detailTextLabel?.text = myItem.addedByUser
return cell
}
}
如果是自定义表格视图单元格,则可以强制将单元格转换为自定义类型。
let cell = tableView.dequeueReusableCellWithIdentifier("ItemCell", forIndexPath: indexPath) as! CustomCell
选择 - 点击符号或使用“快速帮助”查找确切的签名总是一个好主意。