2015-01-16 5 views
0

Я очень новичок в разработке iOS, и я пытаюсь раздобыть голову вокруг viewControllers и как они используются с раскадровки. Я прочитал много официальной документации на viewControllers, Objective-C, и я играл с xCode, чтобы ознакомиться с ним.iOS вложенные контроллеры представлений и построитель интерфейсов

Я пытаюсь создать следующее:

Главное окно - Мой исходный вид должен содержать три «кадров» (я пытаюсь не использовать терминологию IOS, как я не хочу, чтобы запутать)

  • Рамка 1) Прямоугольная область, растянутая на экране, содержащая три кнопки. Каждая кнопка при нажатии приводит к тому, что кадр 2 ниже изменяется между разными видами. Этот тип кадра действует как контроллер представления табуляции, но с вкладками вверху и сменой вида в кадре 2.
  • Рамка 2) Содержит два столбца прокручиваемых элементов таблицы. Когда элемент в первом столбце выбран, он вызывает изменение содержимого во втором столбце.
  • Рамка 3) Простая прокрутка текстовой метки.

Мое мышление было то, что я мог бы достичь выше следующим образом:

InitialViewController Кадр 1) Один вложенный/встроенный containerViewController, содержащий 3 кнопки Рамные 2) Два встроенных tableViewControllers. Я думал, что TVC 1 может передать выбранное ячейкой действие до mainViewController (через делегирование), которое затем даст указание TVC 2 изменить его содержимое. Кадр 3) Прокручиваемый вид

Я пытаюсь создать выше в раскадровке, и я застрял в кадре 2, я создал Frame 1 (контейнерViewController, содержащий 3 кнопки), но когда я пытаюсь перетащить tableViewController на мой основной вид, это не позволяет мне. Перетаскивание его на холст в порядке, это просто не позволит мне перетащить его на основной вид.

Я неправильно понял, как использовать viewControllers (и, следовательно, мой запланированный дизайн неверен), или это то, что я неправильно делаю в дизайне интерфейса xcode?

Любая помощь действительно ценится!

ответ

0

Если вы не используете правильную терминологию, вы, вероятно, не будете правильно думать о своей структуре. Например, кадр 1 должен представлять собой UIView, содержащий три кнопки, а не встроенный контроллер. «Frame 2», может быть 2 встроенных контроллера табличных представлений, но я думаю, что 2-компонентный UIPickerView может быть более уместным. Что касается встраивания контроллеров в другое представление контроллера в раскадровке, вы делаете это, перетаскивая контейнерный вид, и это даст вам новый контроллер автоматически.

Я думаю, что вы неправильно поняли контроллеры. Контроллер представления может иметь несколько подзонов (кнопки, представление выбора, метку), которые он может размещать, вам необязательно иметь несколько контроллеров представлений, чтобы делать то, что вы пытаетесь.

+0

спасибо rdelmar. в отношении «Frame 2» - я рассмотрю UIPickerView. Можете ли вы объяснить, когда встроенный контроллер просмотра будет использоваться в качестве предпочтительного для встроенного представления (или иерархии представлений)? – Wazzag

+0

@Wazzag, трудно ответить на этот вопрос абстрактно. В основном, это зависит от того, что происходит в этом встроенном виде и как оно связано с тем, что делает главный контроллер. – rdelmar

+0

благодарит за вашу помощь. Я посмотрел на UIPickerView, и я думаю, что tableView более подходит.У меня теперь есть два вопроса: 1) Нужен ли мне tableViewController или я могу использовать tableView в моем основном UIView? 2) Как создать UITableView (+ контроллер?) В раскадровке? Я пробовал, но получил исключение: «reason:» ... nib, но не получил UITableView. »« Я сделал это: перетащил ContainerView в мою сцену, а затем изменил класс контроллера, который он создал для класса это подкласс UITableViewController. – Wazzag