在Swift上创建UITableView单元格

时间:2014-08-20 07:36:00

标签: ios uitableview swift

我正在尝试使用swift创建UITableViewCell,在我的委托方法cellForRowAtIndexPath上,

代码很简单,就像在Objective-c中一样,只是试图将语言变形为快速。

我在这一行收到错误

var cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as UITableViewCell

    if(cell == nil)
    {
        let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle,reuseIdentifier:cellIdentifier)
    }

错误是UITableViewCell无法转换为“MirrorDisposition”

我已查找示例,代码就像这样

if !cell
{let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle,reuseIdentifier:cellIdentifier)
}

但它也会出错。

我做错了什么?

2 个答案:

答案 0 :(得分:11)

截至最新测试版(测试版6)非可选类型无法与nil 进行比较。

因此,您必须将您的单元格Var声明为可选。

这样的东西会正常工作(我的头顶 - 我不会在我面前有Xcode):

//declare a tableViewCell as an implicitly unwrapped optional...
var cell:UITableViewCell! = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as? UITableViewCell

//you CAN check this against nil, if nil then create a cell (don't redeclare like you were doing...
if(cell == nil)
{
  cell = UITableViewCell(style: UITableViewCellStyle.Subtitle,reuseIdentifier:cellIdentifier)
}

答案 1 :(得分:9)

更好的选择是使用更现代的方法,它总是返回一个单元格(只要你使用故事板,或者为单元格注册了笔尖或类)

let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as UITableViewCell

由于该方法总是返回一个单元格,因此它不是可选的,并且不需要检查nil。