Ответ 1
Вы можете показать представление одного контроллера раскадровки в другом, но это сложно. У меня был контроллер представления табуляции в раскадровке, где в одном из представлений был NavBar с сегментированным элементом управления, который определил, какой вид двух представлений появился в контроллере. Я назову это "основным" контроллером. То, что я делал, было на "основном" контроллере, внутри основного представления я добавил еще два представления друг на друга, которые соответствуют между навигационной панелью и вкладкой и подключены к ним IBOutlets.
@property (retain, nonatomic) IBOutlet UIView *leftView;
@property (retain, nonatomic) IBOutlet UIView *rightView;
Когда левый сегмент сегментарного элемента управления был нажат, правый экран был скрыт (setHidden: TRUE), а leftView не был скрыт. Обратное для правого сегмента.
Чтобы показать представление из другого ViewController внутри одного из приведенных выше представлений, в "основном" контроллере представления я создал IBOutlet для каждого вторичного ViewController
@property (retain, nonatomic) IBOutlet CustomViewController1 *leftViewController;
@property (retain, nonatomic) IBOutlet CustomViewController2 *rightViewController;
Макеты контроллеров вторичного представления должны соответствовать "первичному" контроллеру с точки зрения появления элементов навигации, статусов и элементов таблеток.
Затем мне пришлось создавать их из раскадровки вручную в ViewDidLoad на "основном" контроллере представлений.
self.leftViewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"CustomViewControllerOne"];
self.rightViewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"CustomViewControllerTwo"];
Где "CustomViewControllerOne" и "CustomViewControllerTwo" являются значениями полей "идентификатор" контроллеров в раскадровке, которые я должен был ввести.
Снова в ViewDidLoad на "основном" контроллере я добавил представления Controller в виде подвидных тех, которые я скрывал и скрывал на основе управления сегментом
[self.leftView addSubview:leftViewController.view];
[self.rightView addSubview:rightViewController.view];
Я обнаружил, что если бы я попытался добавить их в качестве подзонов основного представления без создания двух контейнеров вида (leftView и rightView), вторичные контроллеры представлений были смещены в "основном" контроллере.
Итак, когда пользователь нажал левый сегмент, появился вид из CustomViewController1, и когда они нажали правый сегмент, появился вид из CustomViewController2.