我有一个tabbar iPhone应用程序,其中tabbar是根控制器,每个选项卡都启动一个单独的webview窗口。每次用户点击其中一个标签时,我会拦截AppDelegate中的点击并执行操作,其中一个操作正在显示加载屏幕(标签栏视图中的图像,显示切换为TRUE / FALSE)。
我的问题是,加载屏幕仅在AppDelegate中的所有操作完成时显示,这几乎违背了它的目的。我的猜测是我在设计这个解决方案时遇到了一些根本性的错误,但在iPhone编程方面缺乏经验,我不知道如何修复它。
我正在通过AppDelegate中定义的iboutlet访问showLoading函数:
[hv showLoading];
这就是它的作用:
- (void) showLoading
{
loadingView.hidden = FALSE;
wheelHome.hidden = FALSE;
[wheelHome startAnimating];
NSLog(@"showLoad 1");
}
点击栏后我立即看到“showLoad 1”,但只有当didSelectViewController退出时才会显示加载图片。
我的问题 - 如何从AppDelegate中显示加载屏幕还是有更好的方式来显示加载屏幕吗?
答案 0 :(得分:2)
问题是,只有在事件处理代码返回到运行循环时才会更新UI。您有两种选择:
[myDownloader persormSelector:@selector(download) withObject:nil afterDelay:0];
启动任务。使用performSelector:withObject:afterDelay:
的好处是你的代码返回到运行循环,有时间更新UI,然后立即启动任务。答案 1 :(得分:0)
首先,您的tabbar应该是UITabBarController的控制器,而不是app委托。有关实现的详细信息,请参阅Xcode TabBar模板。
其次,听起来你想要Application Startup Image。这是一个静态图像,如果你的应用需要一点时间启动,它就像一个启动画面。