gpt4 book ai didi

ios - UITableViewCell 数据未显示在 UITableViewController 中

转载 作者:行者123 更新时间:2023-11-28 23:19:30 24 4
gpt4 key购买 nike

我无法调试为什么我的 UITableview 单元格数据没有显示在 UITableview 中。当用户导航到 UITableview 时,它当前显示为空白。数据正确进入 cellForRowAt 并进入设置单元格数据的函数。

设置单元格数据

class EventInboxTableViewCell: UITableViewCell {

@IBOutlet weak var eventNameLabel: UILabel!
@IBOutlet weak var eventCoverImageView: UIImageView!
@IBOutlet weak var eventStartLabel: UILabel!
@IBOutlet weak var eventEndLabel: UILabel!

var eventStartString = String()
var eventEndString = String()

override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}

override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)

// Configure the view for the selected state
}

func setEvent(_ event:Event) {

eventNameLabel?.text = event.eventName

if event.eventStart != nil {
let eventStartTS = event.eventStart
let eventStartDate = eventStartTS?.dateValue()
self.eventStartString = AppWideService.dateToStringShort(date: eventStartDate!)
}

if event.eventEnd != nil {
let eventEndTS = event.eventEnd
let eventEndDate = eventEndTS?.dateValue()
self.eventEndString = AppWideService.dateToStringShort(date: eventEndDate!)
}

print("Event inbox event \(eventStartString)")
print("Event inbox event \(eventEndString)")

eventStartLabel?.text = self.eventStartString
eventEndLabel?.text = self.eventEndString

guard let urlString = event.eventCoverUrl as? String else { return }
let url = URL(string: urlString)
guard url != nil else {
//Couldn't create url object
return
}
eventCoverImageView?.sd_setImage(with: url) { (image, error, cacheType, url) in
self.eventCoverImageView?.image = image
}}}

出于某种原因,当我从设置标签文本中删除 ? 时,它说像 eventNameeventStartString 等值是零,但是我有打印声明以确保它们不是。

UITableView 数据源

override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}

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

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

let cell = tableView.dequeueReusableCell(withIdentifier: "EventInboxTableViewCell", for: indexPath) as! EventInboxTableViewCell

let event = retrievedEvents[indexPath.row]

cell.setEvent(event)

return cell
}

在 viewDidLoad 中注册了单元格

tableView.register(EventInboxTableViewCell.self, forCellReuseIdentifier: "EventInboxTableViewCell")

最佳答案

问题在于 TableView Controller 的使用方式。

如果你在 Storyboard 中设计了一个 View Controller(任何类型的),并且你想使用它,你不能简单地说:

let vc = EventInboxTableViewController()

你必须从 Storyboard实例化它:

if let vc = storyboard?.instantiateViewController(withIdentifier: "EventInboxTableViewController") as? EventInboxTableViewController {
navigationController?.pushViewControllerFromLeft(controller: vc)
}

因此,在 Storyboard 中,将您的自定义类分配给您的 UITableViewController,并确保填写 Storyboard ID 字段(使用您在代码中使用的字符串作为标识符)。

关于ios - UITableViewCell 数据未显示在 UITableViewController 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59846050/

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