gpt4 book ai didi

ios - UITableView 改变 Swift 中某些单元格的内容

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

我有一个带有自定义 UITalbeCellView 的 UITableView。每个单元格都有一个标题、正文和日期。当我获取数据时某些标题必须是红色,因此对于那些标题必须为红色的单元格,有一个 bool 值设置为 true。

第一次获取数据时,看起来不错,但当您上下滚动几次时,所有标题最终都会变成红色

我使用结构数组来存储数据,并且在 cellForRowAtIndexPath 上有一个 if,如果数组该位置的 bool 值为 true,我将颜色更改为红色:

let cell = tableView.dequeueReusableCellWithIdentifier("CommentsRowTVC", forIndexPath: indexPath) as! CommentsRowTVC
let single_comment = self.AOS[indexPath.row]

cell.titulo_comentario?.text = single_comment.titulo_comment
if single_comment.flag == true {
cell.titulo_comentario.textColor = UIColor.redColor()
}

我猜测它会重用 View 或类似的东西。这有什么简单的解决方法吗?或者我是否必须实现自己的 TableView 来防止这种情况发生?我还认为方法 dequeueReusableCellWithIdentifier 可能是导致我的问题的方法......但我是 swift 新手,想不出任何替代方法。

单元格上的按钮上也发生类似的情况,当您单击单元格中的按钮时,它会更改其颜色并禁用它,但只是该单元格上的按钮。但是,当单击某个单元格时,其他单元格的按钮也会遭受这些变化。

最佳答案

由于单元格被重用,您最终会得到以前为红色的单元格,因为它们具有 single_comment.flag == true 并且现在用于实际上有 single_comment.flag = 的另一行=假。您必须再次重置 else 分支中的颜色:

if single_comment.flag == true {
cell.titulo_comentario.textColor = UIColor.redColor()
} else {
cell.titulo_comentario.textColor = UIColor.whiteColor()
}

UITableView 重用它们的单元格,这意味着您将在 cellForRowAtIndexPath 中获取之前使用过的单元格,可能已经设置了 textColor 为红色。您现在的工作是将文本的颜色恢复到原始状态。

一般来说,您在单元格自定义的 if 分支中所做的任何更改都必须在 else 分支中撤消。如果您删除 if 中的标签,请将其添加到 else 中。

关于ios - UITableView 改变 Swift 中某些单元格的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58459691/

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