Как правильно реализовать состояния контроллера «Загрузка/Контент/Ошибка/Пусто» в iOS?

Допустим, есть у нас контроллер UITableViewController, добавленный в Storyboard. В реализации контроллера можно загрузить данные и отобразить их в ячейках этого списка. Но, показывать пустоту во время загрузки данных и уж тем более если произошла ошибка или данных нет, в реальном приложении, совсем не вариант.

Собственно, вопрос в том, по какому принципу или паттерну реализовывают различные состояния сцены:
  • Загрузка данных (индикатор загрузки + текст "Loading")
  • Показ данных после загрузки (показывается заполненный TableView)
  • Ошибка (текст + кнопка "Retry")
  • Пустота (картинка + текст о том, что в данный момент нет данных)

В Android это решается созданием четырёх отдельных XML layout'ов, которые имортируются в другой единый XML с FrameLayout, который накладывает их друг на друга. Затем в коде, в зависимости от необходимого состояния, происходит манипуляция с видимостью каждой из четырёх групп (эта логика выносится в абстрактный класс). Таким образом достаточно легко в случае необходимости что-то поменять и можно переиспользовать часть layout'ов в других похожих "контроллерах" со списком загружаемых данных. Можно ли добиться чего-то подобного со всеми этими Storyboard'ами?
  • Вопрос задан
  • 245 просмотров
Решения вопроса 1
gim0
@gim0 Автор вопроса
Нашёл замечательный проект StatefulViewController, решающий именно эту проблему.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы