自定义UITableViewCell无法正常工作

时间:2017-07-31 14:58:36

标签: ios uitableview cell

我想制作一个可以有很多列的自定义UITableViewCell。一个是UILabel,一个是UIButton。我想通过说我只是通过按住控制键并将UI项目拖到我的代码来创建我的IBOutlets来开始这个。所以这意味着我的所有IBOutlet都正确连接。我的问题是UILabel和UIButton在我的任何细胞中都不可见。细胞在那里,但没有别的。

enter image description here

class CustomTableViewCell: UITableViewCell{
    @IBOutlet weak var label: UILabel!
    @IBOutlet weak var button: UIButton!
}
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{

    var items: [Strings] = ["one", "two", "three"]
    @IBOutlet weak var tableView: UITableView!

    override func viewDidLoad(){
        super.viewDidLoad()
        self.tableView.register(CustomTableViewCell.self, forCellReuseIdentifier: "cell")
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
        return items.count
    }

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

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

        cell.label?.text = self.items[indexPath.row]

        return cell
    }
}

我将UITableView的数据源和委托设置为ViewController,我正确设置了单元重用ID,并且UILabel和UIButton都设置了约束。我觉得我错过了什么。

2 个答案:

答案 0 :(得分:1)

必须注册单元格 - 使用原型单元格时 - 但必须重新加载表格视图。

替换

override func viewDidLoad(){
    super.viewDidLoad()
    self.tableView.register(CustomTableViewCell.self, forCellReuseIdentifier: "cell")
}

override func viewDidLoad(){
    super.viewDidLoad()
    self.tableView.reloadData()
}

答案 1 :(得分:0)

缺少那些:

self.tableView.delegate = self
self.tableview.datasource = self

希望这有帮助!