3

Я хочу реализовать свой собственный контроллер контейнера. Pls, представьте себе, что это мой Ipadпользовательский контроллер контейнера + раскадровка?

enter image description here

Вид обычного расщепленного контроллера представления, но я хочу, чтобы расширить его: ширина зрения «а» должно быть изменяемыми, когда я нажимаю вид «B» - View 'C', идет в видимой области

enter image description here

например, в моем раскадровки, у меня есть 3 вида контейнера: AViewController (для зрения), BViewController, CViewController и один комбинированный контроллер представления (начальное контроллер представления). В комбинированном контроллере представления я буду осуществлять встраивание перетекает из вида контейнера и инициализировать связь между видами контейнеров с помощью следующего кода:

@property ... *aViewController,*bViewController,*cViewController; 
    - (void)prepareForSegue:(UIStoryboardSegue *)segue 
    sender:(id)sender 
    { 
    if ([segue.identifier isEqualToString:@"EmbedAViewController"]) 
    { 
    self.aViewController = 
    segue.destinationViewController; 
    } 
    if ([segue.identifier isEqualToString:@"EmbedBViewController"]) 
    { 
    self.bViewController=segue.destinationViewController 
    } 

    -(void)viewDidLoad 
    { 
    [super viewDidLoad]; 
    self.aViewController.bViewController=self.bViewController; 
    } 

Question1: Является ли она надлежащим образом реализовать свое задание с помощью раскадровки? Вопрос2: Какие существуют ограничения в отношении контейнера? Является ли это визуальной заменой API addChildViewController? Если нет, где мне следует реализовать отношения между родителями и родителями? Я должен использовать в своем сочетании контроллер представления в методе prepareForSegue

[self addChildViewController:aViewController]; 
    [self.view addSubview:aViewController.view]; 

Question3: Как поставить вид контейнера за пределами видимой области в начале?

Если я где-то ошибся или имею большое непонимание основных понятий, не бейте меня. Я сделал много google-foo, я был бы очень признателен за любую помощь. Большое спасибо заранее!

Редактировать:
Я хочу установить отношения между ними. Содержание «B» зависит от «A», а содержание «C» зависит от «B».

ответ

5

Я думаю, что у вас есть некоторые заблуждения. Если вы хотите реализовать контроллеры представления контейнеров в раскадровке, вам не нужно ничего делать в коде. Начните с одного контроллера, который вы вызываете на комбинированном контроллере представления, и перетащите 3 вида контейнера. Изначально вам может понадобиться их размер, чтобы они были полностью высотой и чтобы все они соответствовали бок о бок в главном представлении. Затем вы можете изменить их размеры и позиции с помощью инспектора размера, чтобы представление C начиналось с правого края представления контроллеров комбайнов, таким образом, он будет отключен от экрана. Вы автоматически получите три контроллера вида, подключенных к их соответствующим представлениям контейнера, с помощью встроенного сегмента. Все три из этих контроллеров будут созданы одновременно с комбинированным контроллером. Вам понадобятся выходы в комбинированном контроллере для каждого из его контейнеров, чтобы вы могли изменять их по мере необходимости в коде.

+0

Спасибо за ваш ответ! Я хочу установить отношения между «A» и «B». Содержание «B» зависит от того, что выбрано в «A'-view». –

+0

Собственно, он работает. Я использовал, когда «A» является контроллером табличного представления и «простым» контроллером просмотра ui. И я передал данные между ними без проблем. Я хотел знать, будет ли у меня много ошибок, если я продолжу этот путь? –

+1

@ НаильГалиаскаровб, Это зависит от того, как вы ссылаетесь на один контроллер от другого. A, B и C будут дочерними контроллерами представления комбинированного контроллера представления, поэтому вы можете получить ссылку на них из свойства childViewControllers. – rdelmar