Лучший способ показать экран загрузки в приложении для iPhone? - PullRequest
4 голосов
/ 09 апреля 2010

Я создаю то, что по сути является веб-приложением. Каждый фрагмент данных должен быть извлечен из веб-API. Итак, каждому отображаемому UITableView требуется некоторое время для заполнения данными, и я изо всех сил пытаюсь найти хороший способ показать пользователю загрузочный экран.

Прямо сейчас я выскакиваю лист действий, но это кажется немного неправильным. В идеале, я бы выскакивал пустой вид таблицы с надписью «Загрузка ...», а затем исчезал, когда поступали данные, но я не могу придумать, как это сделать в 8 местах моего приложение без массового дублирования кода.

Ответы [ 2 ]

13 голосов
/ 09 апреля 2010

есть два варианта для вас, по мне.

  1. Использовать оповещение
  2. Использовать MBProgressHUD.

  • Для alertView Вы должны поместить переменную UIAlertView в файл .h. Затем разместите следующий код - когда вы запрашиваете / загружаете данные.

    av=[[UIAlertView alloc] initWithTitle:@"Loading Data" message:@"" delegate:self cancelButtonTitle:nil otherButtonTitles:nil];
    ActInd=[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    [ActInd startAnimating];
    [ActInd setFrame:CGRectMake(125, 60, 37, 37)];
    [av addSubview:ActInd];
    [av show];

Теперь поместите следующее утверждение, когда закончите обработку.

[av dismissWithClickedButtonIndex:0 animated:YES];
[av release]; av=nil;

  • Другой способ - использовать MBProgressHUD
  • Это очень полезно и готово для вас - вам просто нужно выполнить следующие шаги.

  1. Скачать по указанной ссылке
  2. Импорт обоих файлов в ваш проект (копия не ссылка)
  3. #import "MBProgressHUD.h" - импортируйте это, где вы хотите использовать прогресс.
  4. MBProgressHUD *mbProcess; - объявить переменную в * .h файле.
  5. Поместите следующий код при обработке (в файле * .m)

mbProcess=[[MBProgressHUD alloc] initWithView:self.view];
mbProcess.labelText=@"Loading Data";
[self.view addSubview:mbProcess];
[mbProcess setDelegate:self];
[mbProcess show:YES];

  1. Когда ваша обработка закончится, поместите эту строку. [mbProcess hide:YES];
  2. Не забудьте добавить метод делегата MBProgressHUD в ваш * .m файл. как это

#pragma mark -
#pragma mark MBProgressHUDDelegate methods

- (void)hudWasHidden {
    // Remove HUD from screen when the HUD was hidded
    [mbProcess removeFromSuperview];
    [mbProcess release];
}
6 голосов
/ 09 апреля 2010

Если вы хотите хорошо выглядящий спиннер, посмотрите на http://github.com/matej/MBProgressHUD

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