在Swift 2.0中正确实现cellForRowAtIndexPath

时间:2015-12-17 22:05:04

标签: ios swift uitableview

下面的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!
      }

    }

1 个答案:

答案 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

选择 - 点击符号或使用“快速帮助”查找确切的签名总是一个好主意。