Swift - 更新 UILabel 文本时 UITableViewCell 跳转
Posted
技术标签:
【中文标题】Swift - 更新 UILabel 文本时 UITableViewCell 跳转【英文标题】:Swift - UITableViewCell jumps when updating UILabel text 【发布时间】:2017-01-31 15:28:45 【问题描述】:当我像这样更新 UITableViewCell 中的 UILabel 文本时:
self.label.text = "label text"
一切都很好......
但是当我从 Struct Array 更新我的标签文本时,它会导致 UITableView 有时会在向上滚动到顶部时跳跃,而不是在向下滚动时,而是当我向上滚动...
不明白为什么会这样......
结构,正在从我从服务器获得的结果中添加数据
struct ContentStruct
var textLink : String? = ""
var title : String? = ""
var text : String? = ""
CellForRow
let postData = cellContentArray[(indexPath as NSIndexPath).section]
cell.binData(content: postData)
TableViewCell
func binData(content: ContentStruct)
self.titleLabel.text = content.title
self.text.text = "yytytytyt"//text
self.uuidLabel.text = "yhhyhyhyyh"
我正在调整单元格的大小,如下所示: 在 ViewDidLoad 中:
tableView.rowHeight = UITableViewAutomaticDimension
然后是这个:
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat
let height = self.heightAtIndexPath.object(forKey: indexPath)
if ((height) != nil)
return CGFloat(height as! CGFloat)
else
return UITableViewAutomaticDimension
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)
let height = cell.frame.size.height
self.heightAtIndexPath.setObject(height, forKey: indexPath as NSCopying)
有什么想法吗?
提前致谢!
【问题讨论】:
添加数据源代码 @WetSweater 不知道你的意思是什么?表视图代码?还是结构代码?我正在从我之前从服务器下载的结果中将数据添加到结构中......然后我正在正常更新 tableViewCell......这很奇怪,因为它只发生在底部的第三/第四个单元格上,而不发生在任何其他单元格上。 . 这是一个小闪光,我觉得很讨厌 cellForRow 方法的完整内容将有助于提供建议。你在某处重新加载 tableView 吗? 结构数组...? 添加您的 UITableViewDataSource 和有关单元格布局的信息。会有帮助的 【参考方案1】:我发现当您的动态单元格高度与您估计的行高不匹配时,就会发生类似的跳跃。最简单的解决方法是固定单元格高度,或者单独计算每个单元格的高度。
【讨论】:
是的,我同意固定单元格高度要容易得多,但在这种情况下,我不能...给我 1 分钟,我将在上面添加我如何调整单元格的大小。 但奇怪的是,如果我用这样的字符串更新标签,跳转不会发生“字符串”....以上是关于Swift - 更新 UILabel 文本时 UITableViewCell 跳转的主要内容,如果未能解决你的问题,请参考以下文章
iOS Swift 如何更改或更新自定义 UITableViewCell 中的 UILabel 属性
将文本分配给UILabel(iOS,Swift 4,Xcode 9)时内存泄漏