UITableviewcell 是错误的数据
Posted
技术标签:
【中文标题】UITableviewcell 是错误的数据【英文标题】:UITableviewcell is wrong data 【发布时间】:2021-05-02 05:55:11 【问题描述】:我创建了一个自定义 UITableViewCell,该单元格有两个 UITableView。 他们每个人都有 UITableViewCell。像这样
查看 UITableView --(WrapTableView) UITableViewCell 堆栈视图 UITableView --(InformationTableView) UITableViewCell UITableView --(ItemTableView) UITableViewCell而我的代码是这样的,
class MyViewController: UIViewController, UITableViewDataSource, UITableViewDelegate
@IBOutlet weak var wrapTableView: UITableView!
// ... //
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
guard let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
as? WrapTableViewCell else
return UITableViewCell()
cell.setup()
return cell
class WrapTableViewCell: UITableViewCell
@IBOutlet weak var informationTableView: UITableView!
@IBOutlet weak var itemTableView: UITableView!
let informationTableViewDelegate = InformationTableViewDelegate()
let itemTableViewDelegate = itemTableViewDelegate()
func setup()
self.informationTableView = informationTableViewDelegate
self.itemTableView = itemTableViewDelegate
override func prepareForReuse()
//...
//What should I write?
...//
class InformationTableViewDelegate: NSObject, UITableViewDataSource, UITableViewDelegate
guard let cell = tableView.dequeueReusableCell(withIdentifier: InformationTableViewDelegateCell.identifier) as? InformationTableViewDelegateCell else
return UITableViewCell()
cell.setup(text: text)
return cell
class ItemTableViewDelegate: NSObject, UITableViewDataSource, UITableViewDelegate
guard let cell = tableView.dequeueReusableCell(withIdentifier: ItemTableViewDelegateCell.identifier) as? ItemTableViewDelegateCell else
return UITableViewCell()
cell.setup(itemPrice: itemPrice)
return cell
class InformationTableViewDelegateCell: UITableViewCell
@IBOutlet weak var itemNameLabel: UILabel!
func setup(text:String)
self.itemNameLabel.text = text
override func prepareForReuse()
//...
//What should I write?
...//
class ItemTableViewDelegateCell: UITableViewCell
@IBOutlet weak var itemPriceLabel: UILabel!
func setup(itemPrice:String)
self.itemPriceLabel.text = itemPrice
override func prepareForReuse()
//...
//What should I write?
...//
我的问题是,在滚动过程中,旧单元格仍然显示。 我了解我必须使用 prepareForReuse 方法重置旧数据才能重置所有日期。 但是,就我而言,我不知道在每个 prepareForReuse() 方法中要写什么,因为例如 WrapTableViewCell 的属性不像 image 或 Label,尽管在这些情况下 image.image = nil或 label.text = "" 已应用,但类似于 IBOutlet 附加的表格视图 谢谢
【问题讨论】:
“我知道我必须使用 prepareForReuse 方法重置旧数据才能重置所有日期。”你可能理解错了。关注的方法是 UITableViewDataSource 方法,尤其是cellForRow
。您的单元设置需要是或伴随着一个配置方法,用于配置单元的所有内容。
【参考方案1】:
无需使用 prepareForReuse 方法。您需要重新加载数据才能传递给表格视图
【讨论】:
以上是关于UITableviewcell 是错误的数据的主要内容,如果未能解决你的问题,请参考以下文章
保存 UITableviewcell accessoryView 的状态
仅为 UITableViewCell 的一部分调用 didSelectRowAtIndexPath