我的UITabBarController的一个标签需要一些时间才能显示。
在viewcontroler完成其工作之前显示“正在加载”的最佳方法是什么?
我尝试在选项卡的viewController的viewDidLoad方法中设置“now loading”视图,然后我在viewDidAppear中进行工作,设置一个标志,以便下次通过viewDidAppear不再重复工作。
但是,我从未看到“正在加载”视图......必须完成一些优化 - 在TabBarControllerDelegate didSelectViewController之前调用viewcontroller的viewDidAppear。
是否有一个UITabBarController机制允许在显示viewcontroller之前显示占位符视图?
有什么想法吗?
谢谢 - 马特
答案 0 :(得分:2)
我可能是错的,但也许你的问题是,通过在viewDidAppear中执行耗时的工作,您将阻止主事件线程,以便在工作完成之前视图不会更新。即你在viewWillAppear中设置了“now loading”,但是你从来没有看到它,因为在viewDidAppear完成之前,它完成了繁重的工作。
答案 1 :(得分:2)
NSObject的performSelector:withObject:afterDelay:方法在这里很有用。显示“请稍候”警报或视图,或者其他任何内容,然后使用performSelector:withObject:afterDelay:开始实际工作。您的加载将延迟到下一次执行事件循环之后,此时用户界面将被重新绘制。
答案 2 :(得分:1)
这里使用的技术是:
viewWillAppear:
或
viewDidLoad:
方法这样做会使应用程序界面仍然可用,即使特定视图控制器正忙。
没有构建方法可以做到这一点,你必须自己编写代码。