使用从 Storyboard 定义的自定义 UITableViewController 和原型单元进行随机 UI 更新
Posted
技术标签:
【中文标题】使用从 Storyboard 定义的自定义 UITableViewController 和原型单元进行随机 UI 更新【英文标题】:Random UI updating with custom UITableViewController and Prototype cells defined from Storyboard 【发布时间】:2012-02-08 14:58:04 【问题描述】:我创建了一个UITableViewController
的子类,用作我故事板中视图的自定义类。该视图有许多定义为原型单元的部分/行,这些单元被实例化并按预期显示。大多数UITableView
委托方法只是调用super 的方法来处理部分数量、行等。
我已经缓存了用于更新-viewDidLoad
上的单元格的内容,然后是一个异步操作,它从我的服务器重新加载内容并随后重新绑定数据(在主线程上,-performSelectorOnMainThread:
:)。正是在这一点上,看似任意地,一些单元格内容(主要是标签)将被清除数据,并且在 10-15 秒之间不会更新为新数据。此时,刚刚显示的内容或有时在表格视图中滚动的内容都会导致内容出现。
我知道选择器正在被调用,并且在主线程上,UI 元素的文本属性正在设置,但随机它们只是......不要更新。我尝试在 tableView、控制器视图上添加 -setNeedsDisplay
和在 tableView 上添加 -reloadData
(尽管最后一个似乎没有必要,因为它们是原型单元格)都无济于事。
有人遇到过这个吗?
【问题讨论】:
我找到了一个“有问题的”修复 - 将我的 UILabel 更改为 UITextFields 修复了它。我没有将此作为修复程序发布,因为我仍在试图找出为什么 UILabel 没有以类似方式更新。 【参考方案1】:我不确定这是否是由线程方面引起的,或者 tableView 是如何处理的。如果是 tableView,请查看此 post,因为在我正确处理动态原型 tvCells 之前,我的应用正在经历的消失数据有一些相似之处。
【讨论】:
【参考方案2】:我的评论确实解决了我的问题。 UILabel
似乎在修改时不会更新,而是在内部决定何时重绘它们 - 无论您是否尝试使用 display
或 setNeedsDisplay 强制它。
解决方案:使用UITextView
而不是UILabel
【讨论】:
以上是关于使用从 Storyboard 定义的自定义 UITableViewController 和原型单元进行随机 UI 更新的主要内容,如果未能解决你的问题,请参考以下文章
无法更改 Storyboard 中的自定义 UICollectionViewCell
在 Storyboard 中设计的自定义 UITableViewCell 中的自定义 UIView
不使用 Storyboard segues 的自定义视图转换 (Swift)