2009-03-03 58 views
1

我的UITabBarController的一个选项卡需要一些时间才能显示。在UITabBarController选项卡选择之前添加“现在载入”?

在viewcontroler完成其工作之前显示“正在加载”的最佳方式是什么?

我试着在选项卡的viewController的viewDidLoad方法中设置一个“现在正在加载”的视图,然后我在viewDidAppear中进行工作,设置一个标记,以便在下次通过viewDidAppear再次执行该工作。

但是,我从来没有看到“现在加载”视图...一些优化必须完成 - 在TabBarControllerDelegate didSelectViewController之前调用viewcontroller的viewDidAppear。

是否有一个UITabBarController机制,允许在viewcontroller显示之前显示占位符视图?

任何想法?

谢谢你 - 马特

回答

1

在这里使用的方法是这样的:

  1. 提出了一个“加载视图”在您的 控制器的viewWillAppear:viewDidLoad:方法
  2. 然后,产生一个新的线程做 实际装载(或任何时间 消耗过程中,你在做什么)
  3. 完成后,发送消息到 控制器(例如使用委托 模式)在 “加载”完成
  4. 最后,删除加载视图和 让用户进行

这样做,这样让你的应用程序界面仍然可用,即使特定视图控制器忙。

有没有构建方法来做到这一点,你必须自己编码。

2

我可能是错的,但也许你的问题是,这样做在viewDidAppear在耗时的工作,你挡住了主事件线程,使视图不更新直到工作完成。即你在viewWillAppear中设置了“现在加载”,但你从来没有看到它,因为在viewDidAppear完成时,它完成了繁重的工作。

2

NSObject的performSelector:withObject:afterDelay:方法在这里很有用。显示你的“请稍候”提醒或视图,或其他,然后使用performSelector:withObject:afterDelay:开始实际工作。您的加载将被延迟到下一次执行事件循环之后,届时用户界面将被重新绘制。

相关问题