Индикатор активности в приложении UITabBar на iPhone - PullRequest
0 голосов
/ 10 июля 2009

У меня есть приложение UITabBar + UINavigationController, которому часто нужны данные из Интернета. Иногда требуется некоторое время, прежде чем он получит его, поэтому я хотел бы показать индикатор активности.

То, что я пытался, это добавить ActivityView к моему окну в моем методе applicationDidFinishLaunching:

[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 ]

3 голосов
/ 10 июля 2009

Вы загружаете свои данные в фоновом потоке? Ваш основной поток будет заблокирован и не сможет перерисовывать или обрабатывать другие события.

0 голосов
/ 11 июля 2009

В моем приложении я сделал это, добавив UIActivityView в IB и убедившись, что он выше всего остального (как объект верхнего уровня). Когда он остановлен, он становится невидимым.

Затем в моем коде я показываю его с помощью [ActivityIndicator startAnimating] и заставляю его исчезать с помощью [activityIndicator stopAnimating];

0 голосов
/ 10 июля 2009

Наиболее вероятная вещь, которую я могу догадаться, это то, что ваше представление индикатора находится ниже некоторого другого представления. Попробуйте

[[fullScreenLoadingView superView] bringSubviewToFront:fullScreenLoadingView]

Если это не сработает, я бы предложил взломать -startFullscreenLoading, чтобы убедиться, что fullscreenLoadingView все еще действителен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...