iPhone上UITabBar应用程序中的活动指示器

时间:2009-07-10 12:54:05

标签: iphone cocoa-touch

我有一个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:方法,但是我看不到加载指示器视图。那是为什么?

3 个答案:

答案 0 :(得分:3)

您是否在后台线程上加载数据?你的主线将被阻止&将无法重绘或处理任何其他事件。

答案 1 :(得分:0)

我猜测的最可能的事情是您的指标视图低于其他视图。试试

[[fullScreenLoadingView superView] bringSubviewToFront:fullScreenLoadingView]

如果这不起作用,我建议您在-startFullscreenLoading内部进行检查以确保fullscreenLoadingView仍然有效。

答案 2 :(得分:0)

在我的应用程序中,我通过在IB中添加UIActivityView并确保它高于其他所有内容(作为顶级对象)来完成此操作。它被设置为在停止时不可见。

然后在我的代码中,我使用[activityIndi​​cator startAnimating]使其显示并使其与[activityIndi​​cator stopAnimating]一起消失;