Загрузка plist при запуске занимает много времени.Как показать индикатор активности? - PullRequest
0 голосов
/ 15 января 2012

Мое приложение загружает онлайн-список при запуске, который необходим для отображения данных в виде таблицы, которая будет отображаться. В зависимости от подключения к Интернету загрузка списка может занять довольно много времени (4-5 секунд), и экран запуска отображается все это время. Теперь я хотел бы поместить индикатор активности в строку состояния (пока экран запуска все еще работает), чтобы пользователь знал, что приложение загружено.

Я загружаю plist, создаю массивы и т. Д. Во ViewDidLoad, и я не уверен, как добиться того, что я набросал выше.

Есть ли у вас какие-либо мысли по этому поводу? Спасибо.

1 Ответ

2 голосов
/ 15 января 2012

Я бы пересмотрел твой подход на твоем месте. Если вы специально не приняли меры, чтобы этого избежать, вполне вероятно, что ваш код для загрузки plist будет вызываться до того, как applicationDidFinishLaunching: вернется. Это нехорошо, потому что если это займет много времени, сторожевой таймер может убить ваше приложение даже до того, как оно действительно будет правильно запущено. Не очень хорошая вещь.

Вы действительно должны начать загрузку в фоновом потоке и просто вставить спиннер в свой реальный вид. Так что-то вроде этого:

- (void)viewDidLoad {
    ...

    UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    spinner.center = CGPointMake(self.view.bounds.size.width / 2.0f, self.view.bounds.size.height / 2.0f);
    [spinner startAnimating];
    [self.view addSubview:spinner];

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        // Do your downloading of your plist, etc
        dispatch_async(dispatch_get_main_queue(), ^{
            [spinner removeFromSuperview];
        });
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...