2012-04-15 2 views
12

Я инкапсулировал всю свою логику просмотра таблицы в UITableViewController, связанную с представлением. Это было сделано с помощью раскадровки.Как подсмотреть UITableViewController в другом контроллере с использованием раскадровки

Я хотел бы внедрить эту логику и представление внутри другого вид контроллера/зрения

У меня есть следующие компоненты (вроде как информация заголовка с прокруткой таблицей внизу.): CustomViewController, который связан с UIView (притянут из раскадровки) CustomTableViewController, который связан с UITableView (тащили в от раскадровки)

по сути я пытаюсь имитировать сценарий Секундомер в часы приложение IOS

  • Каков подход зверя к этому?
  • Как это делается программно?
  • Возможно ли это сделать на раскадровке?

Любая помощь была бы принята с благодарностью. Спасибо

+0

Я не совсем понимаю ... Вы хотите добавить UIViewController в качестве подзаголовка? – CodaFi

+1

"зверь подход", rawr! – pfrank

ответ

25

Хорошо, понял. Это решение относится к iOS 5, поскольку эта функция была добавлена. Этот метод работает с раскадровки.

Настройка: Цель состоит в том, чтобы разместить один вид контроллеров представления и логику в пределах другого контроллера.

  1. Поскольку не существует никакого внутреннего способа ссылаться на контроллер представления ребенка в раскадровке, мы должны дать контроллер представления имени. Это можно сделать, заполнив атрибут «Идентификатор» на контроллере в раскадровке. ПРИМЕЧАНИЕ. Убедитесь, что вы даете контроллеру идентификатор, а не вид контроллеров.

  2. Мгновенное действие контроллера, который вы хотите заполнить. Это можно сделать с помощью хост-контроллера.

    UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"ControllerIdentifier"]; 
    
  3. Добавить контроллер ребенка в родительский контроллер

    [self addChildViewController: controller]; 
    
  4. Добавить ребенка контроллеры просмотра к просмотру родительских контроллеров. Обратите внимание, что если в родительском контроллере есть представление владельца места размещения, к которому вы хотите добавить дочерний вид, тогда вы это сделаете. Здесь я добавляю его в UIView, называемый stage в родительском контроллере.

    [self clearStage]; 
    [self.stageView addSubview:controller.view]; 
    presentedController.view.frame = self.stageView.bounds; 
    

И что это. Довольно просто. Я успешно использовал его с коммутационными контроллерами и просмотром в домашнем элементе управления вкладками. Подконтроллер подключает свои представления в жизненном цикле просмотра, поэтому viewDidLoad и т. Д. Все работают так, как ожидалось, в этом контроллере детского вида.

Надежды на это помогают кому-то.

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