好吧,我正在尝试以编程方式向我的自定义tableview单元格添加内容,如此处的mob最后一个问题所示 - Swift: tableview cell content is added again and again with each reload?初始化func tableView()中的所有内容会导致重叠。
我已逐字逐句地跟踪了这个问题Swift. Proper initialization of UITableViewCell hierarchy在我的自定义单元格类中(我在故事板中给出了一个名字)我有:
class EventTableCellTableViewCell: UITableViewCell {
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier) // the common code is executed in this super call
// code unique to CellOne goes here
print("INIT")
self.contentView.backgroundColor = UIColor.blackColor()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
由于没有打印任何内容,因此未调用此init。错误来自我的主VC中的func tableView()。我最初有:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("eventCell", forIndexPath: indexPath) as! EventTableCellTableViewCell
// cell.eventTitle.text = names[indexPath.row]
// cell.eventDescription.text = descriptions[indexPath.row]
cell.contentView.clipsToBounds = false
//cell UIX
let eventTitleLabel = UILabel()
let dateLabel = UILabel()
let authorLabel = UILabel()
let locationLabel = UILabel()
let categoryView = UIImageView()
//then I add everything
但这没有用,所以我看了其他帖子,现在有了:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
//var cell = tableView.dequeueReusableCellWithIdentifier("eventCell", forIndexPath: indexPath) as! EventTableCellTableViewCell
var cell = tableView.dequeueReusableCellWithIdentifier("eventCell", forIndexPath: indexPath) as! UITableViewCell
if (cell == nil) {
cell = EventTableCellTableViewCell.init(style: .Default, reuseIdentifier: "eventCell")
}
我也试过没有indexPath。现在我得到一个错误,单元格不能== nil,而不管我写的是什么init都没有被调用。
如何以编程方式配置我的单元格?
答案 0 :(得分:2)
如果在故事板中设计了单元格,则仅调用init?(coder aDecoder: NSCoder)
,则永远不会调用init(style: style, reuseIdentifier:
。
您必须将Interface Builder中的单元格类设置为EventTableCellTableViewCell
。