Допустим, есть у нас контроллер UITableViewController, добавленный в Storyboard. В реализации контроллера можно загрузить данные и отобразить их в ячейках этого списка. Но, показывать пустоту во время загрузки данных и уж тем более если произошла ошибка или данных нет, в реальном приложении, совсем не вариант.
Собственно, вопрос в том, по какому принципу или паттерну реализовывают различные состояния сцены:
- Загрузка данных (индикатор загрузки + текст "Loading")
- Показ данных после загрузки (показывается заполненный TableView)
- Ошибка (текст + кнопка "Retry")
- Пустота (картинка + текст о том, что в данный момент нет данных)
В Android это решается созданием четырёх отдельных XML layout'ов, которые имортируются в другой единый XML с FrameLayout, который накладывает их друг на друга. Затем в коде, в зависимости от необходимого состояния, происходит манипуляция с видимостью каждой из четырёх групп (эта логика выносится в абстрактный класс). Таким образом достаточно легко в случае необходимости что-то поменять и можно переиспользовать часть layout'ов в других похожих "контроллерах" со списком загружаемых данных. Можно ли добиться чего-то подобного со всеми этими Storyboard'ами?