1

我有 2 个由标签栏控制器控制的视图。

我遇到的问题是,从第二个选项卡返回到我的第一个选项卡时,理想情况下,我需要根据我在第二个选项卡中所做的更改重新加载第一个视图的所有数据。

最好不要解释原因,因为我对过度复杂的代码和许多变通方法的失败尝试可能会让你感到震惊。

所以基本上,当我从另一个选项卡返回视图时,我可以让 viewDidLoad 自行重做吗?

编辑:答案是:我认为 viewWillAppear 而不是 viewDidLoad (不能回答自己的问题 8 小时)

4

1 回答 1

0

在大多数情况下,最好不要在 viewDidAppear 上每次都重新加载,而是向视图 1 发送一条消息,告诉它在下次出现时重新加载。这避免了不必要的重新加载(这可能对用户体验不利并使用不必要的带宽)。根据应用中的屏幕流,有多种方法可以做到这一点。一种方法是:

- 在视图 1 上创建一个 ivar BOOL shouldReload

- 每当视图 2(或应用程序中的任何其他地方)发生需要重新加载视图 1 的事情时,都会向 [NSNotificationCenter defaultCenter] 发布一条名为“View1ShouldReload”之类的消息。

-on load of view 1 将 shouldReload 标志设置为 NO 并开始监听

- 在通知选择器上,将 shouldReload 设置为 YES

-on viewDidAppear 检查是否(应该重新加载)然后重新加载。

还有很多其他方法可以做到这一点(比如委托、单例等等),但这是一种让您的应用程序更有效地工作的简单方法。

于 2012-05-10T01:02:53.237 回答