"无法将类型' UITableViewCell' ...的值转换为' UILabel' "

时间:2016-10-28 15:19:42

标签: ios swift uilabel

这是我得到的错误。我确定这是一个简单的解决方案,但我遇到了一些麻烦。我更新了这个帖子来添加代码。

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return 5
}


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "CheckListItem", for: indexPath)

    let label = cell.viewWithTag(1000) as! UILabel

    switch indexPath.row {
    case 0:
        label.text = "Walk the dog"
    case 1:
        label.text = "Brush my teeth"
    case 2:
        label.text = "Learn iOS development"
    case 3:
        label.text = "Soccer practice"
    case 4:
        label.text = "Eat ice cream"
    default:
        label.text = "Nothing"
    }
    return cell
}

Screenshot

2 个答案:

答案 0 :(得分:0)

这是viewWithTag(_:)函数的作用:

  

使用a返回视图的最近后代(包括其自身)   特定标记,如果没有子视图具有该标记,则为nil。

所以你回来的是对象本身以及最近的后代。看起来你只是想在单元格中设置文本,所以你可以做的只是将你的代码更改为:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "CheckListItem", for: indexPath)

    switch indexPath.row {
    case 0:
        cell.textLabel.text = "Walk the dog"
    case 1:
        cell.textLabel.text = "Brush my teeth"
    case 2:
        cell.textLabel.text = "Learn iOS development"
    case 3:
        cell.textLabel.text = "Soccer practice"
    case 4:
        cell.textLabel.text = "Eat ice cream"
    default:
        cell.textLabel.text = "Nothing"
    }
    return cell
}

答案 1 :(得分:0)

我正在使用iOS Apprentice系列,遇到了和你一样的问题。

我认为您可能想要检查标记的附加位置:1000.在Main.storyboard中 - 如果您因为这个原因而失败,您可能已将标记附加到UITableViewCell而不是Label(在内容视图下的UILabel类型。