(Iphone Sdk) Как отобразить анимированный индикатор активности во время загрузки контроллера вида? - PullRequest
0 голосов
/ 17 февраля 2011

У меня такой тяжелый вид, который загружается через две или более секунд.Я хотел бы показать индикатор активности при переносе всех вещей в viewDidLoad, а затем скрыть его.Может ли кто-нибудь направить меня к этому?Заранее спасибо.

Ответы [ 5 ]

3 голосов
/ 17 февраля 2011

Попробуйте MBProgressHUD от Matej Bukovinski.

https://github.com/matej/MBProgressHUD

Выборка данных в фоновом режиме

HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];
[self.navigationController.view addSubview:HUD];
HUD.delegate = self;
HUD.labelText = @"Loading";
[HUD showWhileExecuting:@selector(getStartupData:)
               onTarget:self
             withObject:nil
               animated:YES]

Если вы хотите получить данные в основном потоке, просто покажите HUD, а затем отклоните его при получении уведомления.

HUD = [[MBProgressHUD alloc] initWithView:self.tableView];
[self.tableView addSubview:HUD];
HUD.labelText = @"Loading";
HUD.tag = 998;
[HUD show:YES];
[HUD release];
1 голос
/ 17 февраля 2011

Вы можете сделать это очень просто в viewDidLoad

UIAactivityIndicatorView *  date  = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(150, 150, 30, 30)];
[date setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];
[self.view addsubview:date];
[date startAnimating];

После загрузки просмотра страницы вы перестаете анимировать индикатор «Активность» с помощью [дата остановки анимации];

это будет работать

1 голос
/ 17 февраля 2011

Попробуйте переместить материал, который занимает так много времени, в viewDidAppear.Затем вы можете создать новое представление с индикатором активности и сделать его видимым (проще всего в построителе интерфейса), и как только все ваши вещи будут сделаны, просто наберите:

1 голос
/ 17 февраля 2011

Поместите [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; в представление, из которого вы вызываете viewController с медленной загрузкой, или в appDidFinishLoading, если медленный стартер является начальным представлением.

Кроме того, рассмотрите возможность перемещения действия, которое занимает много времени, из основного потока в фоновый поток, сохраняя GUI всегда отзывчивым.

1 голос
/ 17 февраля 2011

Не знаю точно, но сомневаюсь, что можно запустить viewDidLoad в фоновом потоке. Если это так, у вас нет возможности анимировать индикатор активности при запуске viewDidLoad.

Итак, на вашем месте я бы выяснил, что так долго занимает viewDidLoad, и поместил бы это в метод, который может работать в фоновом режиме.

Затем добавьте представление индикатора активности в свой метод viewWillAppear и удалите его после завершения фоновой задачи.

В зависимости от того, что вы делаете в viewDidLoad, это может потребовать большого количества рефакторинга и добавления методов делегатов.
Я думаю, вы загружаете что-то, что должно отображаться.

...