注册表单元格在展开时发现为nil

时间:2019-01-07 01:49:32

标签: ios swift uitableview

与常规的UITableViewController不同,我正在尝试在容器视图中创建一个表视图,以便可以对其进行动画处理。

在情节提要中创建了一个UIViewController,并将UIView作为“ containerView”。在containerView内部是一个tableView。 IDK为什么它一直给我零。

class SearchViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    @IBOutlet weak var tableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.dataSource = self
        tableView.delegate = self

        tableView.register(SearchViewCell.self, forCellReuseIdentifier: "SearchResult")
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "SearchResult", for: indexPath) as! SearchViewCell
        cell.addressLabel.text = "Hello"
        cell.subtitleLabel.text = "There"
        return cell
    }   
}

SearchViewCell

class SearchViewCell: UITableViewCell {
    @IBOutlet weak var addressLabel: UILabel!
    @IBOutlet weak var subtitleLabel: UILabel!

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
    }
}

1 个答案:

答案 0 :(得分:2)

1-此寄存器

tableView.register(SearchViewCell.self, forCellReuseIdentifier: "SearchResult")

仅对以编程方式创建的自定义单元(显然没有出口)有效。

2-对于原型单元格(当您在布局表中创建单元格时),则不需要寄存器

3-如果您是在xib中创建单元格布局的,那么还有另一种注册方式

 tableView.register(UINib(nibName: "SearchViewCell", bundle: nil), forCellReuseIdentifier: "cellID")