Swift 3自定义单元格错误

时间:2016-12-17 01:28:50

标签: ios swift uitableview swift3

我已经尝试了多种方法来尝试在Swift 3中获得一个简单的标题和消息表格单元格。这是我能够使用它的最远和最接近的。我在App Delegate文件的第一行收到Thread 1: Signal SIGABRT错误,在我的控制台输出中收到libc++abi.dylib: terminating with uncaught exception of type NSException

细胞类。插座连接到我的故事板文件中的原型单元。

import UIKit
class MyTableCell: UITableViewCell {
    @IBOutlet weak var label1: UILabel!
    @IBOutlet weak var label2: UILabel!
}

加载表的代码

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

    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! MyTableCell

    if cell == nil {
        let cell:MyTableCell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! MyTableCell
        cell.textLabel?.text = posts[indexPath.row].title
        cell.detailTextLabel?.text = posts[indexPath.row].message
        return cell
    } else {
        cell.label1.text = posts[indexPath.row].title
        cell.label2.text = posts[indexPath.row].message
    }



    return cell
}

注意:我找到了上面的代码来在线加载表格。这是我下面更简单的代码,但是无法正常工作。

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

    let cell:MyTableCell = self.tableView.dequeueReusableCell(withIdentifier: "Cell") as! MyTableCell

    cell.label1.text = posts[indexPath.row].title
    cell.label2.text = posts[indexPath.row].message

    return cell
}

1 个答案:

答案 0 :(得分:0)

如果在调用nil时返回tableView.dequeueReusableCell,则必须使用指定的UITableViewCell初始值设定项来实例化该单元格。您提供的代码转过来并再次调用tableView.dequeueReusableCell,这将再次返回nil。

要实例化新单元格,请使用以下命令:

let cell = MyTableCell( style: .default, reuseIdentifier: "MyTableCell" )