Каков наилучший способ отображения немодального сообщения «Загрузка» на iPhone?

#iphone

#iPhone

Вопрос:

У меня есть приложение для iPhone, и иногда, когда пользователь нажимает кнопку, выбранная операция занимает минуту или две. Я хотел бы отобразить сообщение с инструкцией пользователю подождать, но не блокировать пользователя от использования приложения в то же время. Также я хотел бы добавить настраиваемый текст в сообщение.

Другим требованием является то, что я использую TabBarController в качестве основного элемента управления навигацией.

Моя идея состоит в том, чтобы сообщение отображалось в верхней части экрана, уменьшая размер содержимого на 20 пикселей. Обратите внимание, что, поскольку будет несколько экранов, это 20-пиксельное сообщение должно быть независимым от любого отдельного экрана.

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

1 — Создайте корневой просмотр и вызовите addSubview с помощью TabBarController. Затем я могу изменить размер TabBarController и отобразить сообщение в корневом представлении внизу. Это не удается, потому что дочерние представления TabBarController не получают сообщений «viewDidAppear». Интересно, что если я покажу модальное окно в какой-то более поздний момент, сообщения «viewDidAppear» начнут работать. Но я бы хотел, чтобы viewDidAppear появлялся в начале.

2 — Аналогично # 1. Создайте корневое представление и отобразите TabBarController в виде модального представления. Это позволяет viewDidAppear работать, но если экран повернут, сообщение о повороте не распространяется на корневой просмотр. Поэтому я не могу повернуть корневой просмотр.

3 — Подкласс TabBarController для правильной обработки вращения. В документах Apple сказано не делать этого, поэтому я беспокоюсь, что мое приложение будет отклонено, если я смогу заставить его работать.

4 — Добавьте два вида в главное окно. Один для отображения сообщения, а другой для содержимого приложения. Это связано с той же проблемой вращения, что и вариант № 2.

Приветствуются любые предложения. Спасибо.

Комментарии:

1. Для случая № 2: передайте уведомление из корневого VC в TabBarController вручную.

2. Рассматривался «значок» с надписью «12%» на соответствующей кнопке вкладки?

3. @Kris Van Bael — Нет, но это звучит как возможная идея.

Ответ №1:

Это не точный ответ на ваш вопрос, но вы могли бы рассмотреть возможность использования сообщения в верхней части строки состояния. Его используетReeder, и я нахожу его очень интересным и хорошим примером ненавязчивой обратной связи (которая также экономит вам несколько пикселей :). Если вы хотите сделать это легко, взгляните на эту библиотеку (обязательно прочитайте предупреждение). Второй вариант, также предложенный Крисом Ван Бэлом в комментарии, заключается в добавлении пользовательского представления, похожего на Instagram. Опять же, в этой статье есть подробная информация. Я надеюсь, что это поможет!

Комментарии:

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

2. Значок не является пользовательским представлением. Это стандартная функция UITabItem

3. О, я думал, вы имели в виду «пользовательский значок» из-за «%» после «12», точно так же, как этот вид наложения в связанной статье.