在未对视图控制器的内容收费时阻止UITabBarController

时间:2011-09-12 15:00:01

标签: iphone sdk uitabbarcontroller

我正在做一个使用TabBarController的应用程序,每个Tab都使用自己的导航控制器。

该应用程序具有动态内容,我使用viewDidDisappear viewDidAppear方法创建或销毁每次进入或退出ViewController时所需的对象。

我的问题是,当我开始快速航行时,我没有时间加载用于上传内容的线程,例如XML peta应用程序或在我离开ViewController时销毁对象。

在viewcontroller加载了所有内容之前,如何控制导航栏或tabbarviewcontroller的选项卡不响应?

如果我表达不好,请原谅。谢谢!

2 个答案:

答案 0 :(得分:2)

无论您使用同步请求还是异步请求,只需在加载数据时显示UIAlertView即可。这将作为通知用户正在加载某些内容,并且它将阻止与屏幕上所有其他视图的交互。

答案 1 :(得分:1)

正如其他人在评论中所建议的那样,我相信你想要做的是重新排列触发事物的顺序。也许是这样的:

  • 在viewWillAppear:上,清除(或禁用或任何适当的)您不再有效的对象并开始加载新内容线程。也许会显示一个UIActivityIndi​​cator或类似的东西。
  • 在viewWillDisappear:上,告诉load-new-content线程它可以停止,不再需要它的结果。如果您设置活动指示器,请将其取下。
  • 在加载新内容线程结束时,删除任何活动指示符,使用新内容更新UI并激活。

我真的没有看到任何方法 - 如果在加载新内容之前UI无效,那么你必须等待它。

另一种解决方案可能是缓存前一次获取的内容,并始终在viewDidLoad上显示这些内容。然后,在新内容线程的末尾,缓存新内容,并更新UI。