自定义TableViewCell不显示

时间:2019-02-22 17:32:01

标签: ios swift uitableview

因此,我对iOS开发很陌生。我尝试以编程方式创建所有内容,因此我的故事板为空。我目前正在尝试使用自定义单元格获取TableView。当我使用标准UITableViewCell时,TableView正在运行,并且看起来不错。我创建了一个非常简单的类“ GameCell”。基本上,我想在这里创建一个带有多个标签的单元格,将来可能会创建一些额外的UIObject(imageView等)。由于某些原因,自定义单元格不会显示。

游戏单元类别:

class GameCell: UITableViewCell {

    var mainTextLabel = UILabel()
    var sideTextLabel = UILabel()

    func setLabel() {
        self.mainTextLabel.text = "FirstLabel"
        self.sideTextLabel.text = "SecondLabel"
    }
}

这里有其他必要的代码来获取行数并将单元格返回到ViewController中的TableView中。 self.lastGamesCount在这里只是一个Int,在我打印时绝对不是零。

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return self.lastGamesCount
        }

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

let cell = tableView.dequeueReusableCell(withIdentifier: cellID) as! GameCell

在我的viewDidLoad()中,我像这样注册单元格:

tableView.register(GameCell.self, forCellReuseIdentifier: cellID)

当我运行一切构建成功时,我可以看到我的应用程序的导航栏,而除TableView之外的所有导航栏都是空的。我回到正常的UITableViewCell,并且单元再次出现。我在这里想念什么?任何帮助表示赞赏。

谢谢!

1 个答案:

答案 0 :(得分:1)

问题是您需要为这些标签设置约束

var mainTextLabel = UILabel()
var sideTextLabel = UILabel()

将它们添加到单元格中

class GameCell: UITableViewCell {

    let mainTextLabel = UILabel()
    let sideTextLabel = UILabel()

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        setLabel()
    }
    func setLabel() { 
        self.mainTextLabel.translatesAutoresizingMaskIntoConstraints = false
        self.sideTextLabel.translatesAutoresizingMaskIntoConstraints = false 
        self.contentView.addSubview(mainTextLabel)
        self.contentView.addSubview(sideTextLabel) 
        NSLayoutConstraint.activate([  
            mainTextLabel.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor), 
            mainTextLabel.trailingAnchor.constraint(equalTo: self.contentView.trailingAnchor), 
            mainTextLabel.topAnchor.constraint(equalTo: self.contentView.topAnchor,constant:20), 
            sideTextLabel.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor), 
            sideTextLabel.trailingAnchor.constraint(equalTo: self.contentView.trailingAnchor), 
            sideTextLabel.topAnchor.constraint(equalTo: self.mainTextLabel.bottomAnchor,constant:20), 
            sideTextLabel.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor,constant:-20)
        ])
        self.mainTextLabel.text = "FirstLabel"
        self.sideTextLabel.text = "SecondLabel"
    }
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    } 
}