2013-06-20 2 views
1

Мне нужно реализовать аккордеонный контроль для iOS. Под гармошку, я имею в виду пользовательский интерфейс, как это:Нужен ли мне контейнер ViewController или составной вид?

enter image description here

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

Способ №1: создать контейнер ViewController, что-то вроде UITabBarController, за исключением того, что вместо того, чтобы показывать вкладки внизу, я рисую вертикальный стек кнопок, а когда вы нажимаете один, открывается соответствующая панель и отображает соответствующий просмотреть вид контроллера.

Метод № 2: Создайте композитный вид, добавьте кучу представлений непосредственно к нему и покажите/спрячьте их по мере необходимости.

Как я могу выбрать здесь? Что бы заставить меня хотеть относиться к подразделениям как к контроллерам представлений и к представлениям?

+1

Как насчет метода №3: ​​Просмотр таблицы с использованием пользовательских ячеек? Я огромный поклонник табличных представлений, поэтому я склонен видеть структуры таблиц повсюду :-) – herzbube

+0

@herzbube: Я знаю, что люди так же используют табличные представления, но это похоже на нечетный инструмент для работы, поскольку строки данных aren это то же самое, и вам приходится делать всевозможные сложные вещи, чтобы иметь дело с неровными высотами ряда и разными видами взглядов для разных индексов. –

+1

iOS имеет довольно богатый набор элементов управления с открытым исходным кодом для этого типа вещей. Вот один из них, и я уверен, что есть еще несколько через Google: https://www.cocoacontrols.com/controls/uiexpandabletableview – iwasrobbed

ответ

1

Вообще говоря, если я могу избежать этого, я стараюсь не подклассы UIView и вместо этого делать все в пределах UIViewController подклассов. Контроллер обычно требуется в любом случае (модель/вид кода клея, взаимодействие с пользователем, делегирование, обработка уведомлений и т. Д.), Поэтому, если не требуется какой-либо пользовательский чертеж, то обычно можно обойтись без подкласса UIView.

В вашем случае я мог представить один подклассу UIViewController, который представляет запись списка. Она имеет следующие обязанности:

  • Создать два альтернативных просмотра иерархий (разрушилась кнопки /, дополненное/панель)
  • Переключение между отображением иерархий в реакции взаимодействия с пользователем (с/без анимации)

И еще один UIViewController подкласс, который представляет весь список. Она имеет следующие обязанности:

  • Override соответствующие методы из UIViewController, чтобы сделать его в контейнер VC
  • Добавить/удалить дочерние VCs в зависимости от обстоятельств к внутренней модели
  • Возможно настроить вид контейнера в реакции свернуть/развернуть события в дочернем VCs
+0

Спасибо за подробный ответ. Я попробую и посмотрю, как это работает. –

Смежные вопросы