gpt4 book ai didi

ios - 以编程方式创建的自定义 UITableViewCell 不会填充给定数据 - Swift

转载 作者:行者123 更新时间:2023-11-29 02:25:33 25 4
gpt4 key购买 nike

事情没有按预期进行。我确信我已经正确访问了这些值,那么为什么这不会填充两个单元格呢?我认为这只是我刚刚忽略的简单事情,但出于我的爱,我无法弄清楚。提前致谢。

ViewController.swift

import UIKit

class ViewController: UITableViewController, UITableViewDelegate {

var events: Dictionary<String, [String]> = ["0": ["Monroe Family", "La Cañada", "8:30"], "1": ["Steven Family", "Glendale", "7:30"]]

override func viewDidLoad() {
super.viewDidLoad()

tableView.registerClass(EventCell.self, forCellReuseIdentifier: "EventCell")

tableView.dataSource = self;
tableView.delegate = self;
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()

}

override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension;
}

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

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

var cellIdendifier: String = "EventCell"

var cell: EventCell = tableView.dequeueReusableCellWithIdentifier(cellIdendifier, forIndexPath: indexPath) as EventCell

if let i = events[String(indexPath.row)] {
cell.eventName.text = i[0]
cell.eventCity.text = i[1]
cell.eventTime.text = i[2]
}

cell.sizeToFit()

return cell


}
}

EventCell.swift

import UIKit

class EventCell: UITableViewCell {

var eventName: UILabel = UILabel()
var eventCity: UILabel = UILabel()
var eventTime: UILabel = UILabel()

override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)

self.contentView.addSubview(eventName)
self.contentView.addSubview(eventCity)
self.contentView.addSubview(eventTime)
}

required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}

override func layoutSubviews() {
super.layoutSubviews()

eventName = UILabel(frame: CGRectMake(20, 10, self.bounds.size.width - 40, 25))
eventCity = UILabel(frame: CGRectMake(0, 0, 0, 0))
eventTime = UILabel(frame: CGRectMake(0, 0, 0, 0))

}

}

最佳答案

问题出在您的 EventCell 类上。

您在 init 中向 contentView 添加标签,并且在 layoutSubviews 中再次分配它。因此,您在初始化单元格时添加了一个标签,然后重新分配它。所以你失去了第一个标签对象之间的连接。因此,当您从 cellForRowAtIndexPath 访问这些标签时,您将获得第二个标签实例(未添加到单元格中)而不是显示的标签实例(第一个标签实例)

关于ios - 以编程方式创建的自定义 UITableViewCell 不会填充给定数据 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27587781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com