首页 > 解决方案 > 展开时发现注册表单元格为零

问题描述

我正在尝试在容器视图中创建一个 tableview,以便我可以对其进行动画处理,这与常规的 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
    }   
}

搜索视图单元

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)
    }
}

标签: iosswiftuitableview

解决方案


1- 这个寄存器

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

仅对以编程方式创建的自定义单元有效(显然是没有插座的单元)

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

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

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

推荐阅读