gpt4 book ai didi

swift - xib 中设计的自定义 UITableViewCell 没有

转载 作者:行者123 更新时间:2023-11-30 12:59:16 26 4
gpt4 key购买 nike

我曾经在主 Storyboard中设计自定义单元,一切都很好,直到我尝试在外部“xib”文件中设计它。
我发现设计、设置约束等确实更容易。
显然,这两种方式都有一个 UITableViewCell 类。
我为新的 xib 做了所有新的 IBOutlet,Xcode 没有显示任何错误,一切看起来都很好并且必须工作得很好。

但是,聚会结束了

fatal error: unexpectedly found nil while unwrapping an Optional value

self.photo.image = 照片

class CellForMessages: UITableViewCell {
@IBOutlet weak var photo: UIImageView!
@IBOutlet weak var name: UILabel!
@IBOutlet weak var surname: UILabel!
@IBOutlet weak var count: UILabel!

override func prepareForReuse() {

self.photo = nil
self.name.text = nil
self.surname.text = nil
self.count.text = nil
}

func fillWithContent(photo: UIImage, name: String, surname: String, count: Int) {
self.photo.image = photo
self.name.text = name
self.surname.text = surname
self.count.text = String(count)
}

Controller 文件包含以下所有内容:

let cell = tableView.dequeueReusableCell(withIdentifier: "messagesProfileCell", for: indexPath) as! CellForMessages
cell.fillWithContent(photo: image!, name: self.profiles[indexPath.item].userName!, surname: profiles[indexPath.item].userSurname!, count: count)

我什至尝试过添加这段代码,但有人告诉我没有必要,并且可以删除某些内容,
但是我尝试了,错误仍然存​​在。

tableView.register(CellForMessages.self, forCellReuseIdentifier: "messagesProfileCell")

所有 socket 都是最新的,并且在主 Storyboard 中设置了标识符。

我错过了什么?
我不想回到旧的单元设计方式。

谢谢!!!

最佳答案

您将通过 self.photo = UIImageView() 覆盖 XIB 中文件所有者加载的 UIImageView。您应该将 imageView 的图像设置为 nil。

@IBOutlet weak var photo: UIImageView?
@IBOutlet weak var name: UILabel?
@IBOutlet weak var surname: UILabel?
@IBOutlet weak var count: UILabel?

override func prepareForReuse() {

super.prepareForReuse()

self.photo?.image = nil
self.name?.text = nil
self.surname?.text = nil
self.count?.text = nil
}

您可以将 ? 添加到 Outlet 的末尾,使它们成为可选的,因此如果其中一个(无论出于何种原因)为零,它也不会崩溃。这意味着在使用任何商店时,您必须在名称后使用 ?,例如self.photo?.image = nil

关于swift - xib 中设计的自定义 UITableViewCell 没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40037219/

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