iOS: добавление индикатора активности в нужное место (Master-View-Controller)

Я начинаю с шаблона MasterViewController / DetailViewController в XCode. Я добавил вызов, в котором я беру данные из Интернета (JSON) и заполняю ими массив.

Я хочу добавить индикатор активности в MasterViewController и показывать его при загрузке данных.

Однако я не уверен, как это сделать, и ГДЕ я должен это указать. Я думаю о двух альтернативах:

  1. создать настраиваемую ячейку только с одним индикатором активности и отображать только эту ячейку до загрузки данных.
  2. программно добавить индикатор активности в представление как подпредставление и отображать его только во время загрузки данных.

Любое альтернативное предложение? Каковы рекомендации Apple по этому поводу?

Вот проект, показанный в StoryBuilder:

введите описание изображения здесь


person mm24    schedule 09.02.2015    source источник
comment
Я думаю, что нет необходимости в подпредставлении, в большинстве приложений индикатор активности находится в самом табличном представлении (если он не является нестандартным и необычным), также я бы обратил внимание, сколько времени займет получение данных. например, если у вас есть изображение, есть смысл поставить метку в качестве индикатора активности поверх изображения, но в вашем случае я бы использовал один индикатор активности для tableview. developer.apple.com/library/ios/documentation/UserExperience/ все остальное зависит от вас.   -  person Mike.R    schedule 09.02.2015
comment
UIActivityIndicatorView, который вы размещаете в любом месте на раскадровке, имеет два настраиваемых атрибута поведения: анимация и скрытие при остановке. Первый - это постоянное поведение; второй, однако, означает, что вам не нужно беспокоиться о том, чтобы скрыть его, когда это будет сделано.   -  person GlennRay    schedule 10.02.2015


Ответы (1)


Это косвенный ответ, но вам следует взглянуть на MBProgressHUD на GitHub.

Это отличный класс для отображения модальных просмотров прогресса. Есть поддержка:

  1. Неопределенные просмотры прогресса (имеется в виду вращающийся индикатор активности)
  2. Определите просмотры прогресса (где вы можете показать фактический прогресс)
  3. Labels:
    • LabelText: main text for the HUD
    • DetailsLabelText: место для деталей / текста сообщения

Кроме того, его легко стилизовать, и я обнаружил, что это намного проще, чем пытаться добавить UIActivityIndicatorView.

Например, вот простой способ добавить HUD к view UIViewController:

MBProgressHUD *hud          = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.detailsLabelText        = @"Loading...";
hud.dimBackground           = YES;
hud.labelText               = @"Please Wait...";
hud.mode                    = MBProgressHUDModeIndeterminate;

Позже избавиться от него очень просто:

[hud dismiss:YES];

Предупреждение: это не прямая замена для UIRefreshControl, который вы получаете с UITableViewController. Я не уверен, требуется ли это, но я всегда использую это представление (MBProgressHUD) как блокирующий элемент управления, пока что-то происходит в фоновом режиме, например, асинхронная загрузка данных. Тем не менее, после начальной загрузки данных (когда я использую MBProgressHUD), я выполняю последующие обновления данных в фоновом режиме, не прерывая пользовательский интерфейс.

person mbm29414    schedule 09.02.2015