我有一个UITabBar + UINavigationController应用程序,它经常需要来自互联网的数据。有时需要很长时间才能得到它,所以我想展示一个活动指标。
我尝试的是在我的applicationDidFinishLaunching方法中向我的窗口添加一个activityView:
[window addSubview:tabBarController.view];
fullscreenLoadingView.hidden = YES;
[window addSubview:fullscreenLoadingView];
然后我将应用程序委托作为观察者添加到默认通知中心:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(startFullscreenLoading:) name:@"startFullscreenLoading" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stopFullscreenLoading:) name:@"stopFullscreenLoading" object:nil];
并实施方法:
- (void)startFullscreenLoading:(NSNotification *)notification {
fullscreenLoadingView.hidden = NO;
}
- (void)stopFullscreenLoading:(NSNotification *)notification {
fullscreenLoadingView.hidden = YES;
}
当我在applicationDidFinishLaunching方法中直接使用它时,加载指示器视图按预期显示upp:
[[NSNotificationCenter defaultCenter] postNotificationName:@"startFullscreenLoading" object:self];
但是当我从其中一个导航控制器使用它时,会调用startFullscreenLoading:方法,但是我看不到加载指示器视图。那是为什么?
答案 0 :(得分:3)
您是否在后台线程上加载数据?你的主线将被阻止&将无法重绘或处理任何其他事件。
答案 1 :(得分:0)
我猜测的最可能的事情是您的指标视图低于其他视图。试试
[[fullScreenLoadingView superView] bringSubviewToFront:fullScreenLoadingView]
如果这不起作用,我建议您在-startFullscreenLoading
内部进行检查以确保fullscreenLoadingView
仍然有效。
答案 2 :(得分:0)
在我的应用程序中,我通过在IB中添加UIActivityView并确保它高于其他所有内容(作为顶级对象)来完成此操作。它被设置为在停止时不可见。
然后在我的代码中,我使用[activityIndicator startAnimating]使其显示并使其与[activityIndicator stopAnimating]一起消失;