iOS UITableViewCell UIImageView 在不同条件下的设置

Posted

技术标签:

【中文标题】iOS UITableViewCell UIImageView 在不同条件下的设置【英文标题】:iOS UITableViewCell UIImageView setting on different conditions 【发布时间】:2012-11-11 04:55:26 【问题描述】:

我有一个应用程序,它有一个UITableView,在我的Cells 中我有UIImageViewsUILabels,它们为白天主题和夜间主题更改图像/文本颜色(试图自动设置)。

我的问题是,当表格填充有cellForRowAtIndexPath 及其白天“主题”时,我设置了图像和颜色,然后如果我在晚上“主题”几个小​​时后重新打开应用程序并且应用程序仍然在“背景”中并且不需要重新加载(即viewDidLoad 不会触发),显示“主题”这一天,直到我滚动UITableView,然后当新单元格进入视图时显示夜间“主题”通过滚动。

当一天中的时间发生变化时,我应该如何设置单元格中的对象?我正在考虑使用NSTimer,但我不确定如何更新单元格中的对象。我也在考虑使用AppDelagate 中的适当方法来启动事物,但是有没有办法强制重新加载TableView

有什么建议吗?

【问题讨论】:

【参考方案1】:

viewWillAppear 被调用时,你可以调用[tableView reloadData]。 viewDidLoad 对你来说不会经常发生,你真正想要的是在视图即将出现在用户面前时刷新。

您还可以在您的应用委托上检查applicationWillEnterForeground,并向您的视图控制器发出信号以同样以这种方式重新加载其表格视图。

【讨论】:

我已将[tableView reloadData] 添加到viewWillAppear,当我从另一个视图控制器返回该视图控制器时,它确实会触发。这样就解决了这个问题。但是,我也尝试重新加载applicationWillEnterForeground 中的数据,但我做得不对。我试过MyViewController *vc = (MyViewController *) vc; [vc.tableView reloadData]; and I don't think it actually reloads the data. How do I do this in applicationWillEnterForeground`? 当你进入前台时,cellForRowAtIndexPath 中的断点会被命中吗? 没有。如果我点击主页然后返回应用程序,它似乎不会触发。我认为我没有正确启动 reloadData 方法。如何在applicationWillEnterForeground 方法中正确执行此操作? 我做了一些搜索,这正是我所需要的:***.com/questions/5873450/… 感谢您提供关于viewWillAppear 的提示,因为这为我解决了另一个问题:-)【参考方案2】:

您需要使用 applicationWillEnterForeground: 并在您的表格视图上调用 reloadData。

【讨论】:

以上是关于iOS UITableViewCell UIImageView 在不同条件下的设置的主要内容,如果未能解决你的问题,请参考以下文章

动态调整 UITableViewCells 的大小

iOS开发UI篇—UITableviewcell的性能问题

IOS:UITableViewCell

iOS UITableViewCell点击时子视图背景透明的解决方法

iOS 13 UITableViewCell |子视图被剪掉

浅析iOS开发中UITableViewCell的复用机制