因此,我对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,并且单元再次出现。我在这里想念什么?任何帮助表示赞赏。
谢谢!
答案 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")
}
}