2015-06-17 2 views
0

Я хочу использовать addChildViewController в View (один вид из массива subviews), но я об этом не знаю. это мой код:Как использовать addChildViewController в subview

for (UIView *subview in self.view.subviews) { 
     if (subview.tag == 1) { 
      CartView *cart = [[CartView alloc]init]; 

      [cart willMoveToParentViewController:????];/* (UIViewController*) from subview*/ 
      [cart.view setFrame:CGRectMake(0.0f,CGRectGetHeight(self.view.frame),CGRectGetWidth(self.view.frame),CGRectGetHeight(self.view.frame))]; 
      [UIView beginAnimations:nil context:nil]; 
      [UIView setAnimationDuration:0.3]; 
      [cart.view setFrame:CGRectMake(0.0f,0,CGRectGetWidth(self.view.frame),CGRectGetHeight(self.view.frame))]; 
      [UIView commitAnimations]; 
      [subview addSubview:cart.view]; 
      [???? addChildViewController:cart]; 
      [cart didMoveToParentViewController:????]; 
     } 
    } 

Я не знаю, как получить UIViewController * от подвид !!!!

+0

является CArtVIew UIView или UIViewCOntroller? –

ответ

0

Из документации Apple:

(Здесь содержание рассматривается в качестве контроллера ребенка)

Добавление зрения другого контроллера представления иерархии вида контейнера

- (void) displayContentController: (UIViewController*) content; 
{ 
    [self addChildViewController:content];     // 1 
    content.view.frame = [self frameForContentController]; // 2 
    [self.view addSubview:self.currentClientView]; 
    [content didMoveToParentViewController:self];   // 3 
} 

Вот что делает этот код:

  1. Он вызывает метод addChildViewController контейнера: для добавления ребенка. Вызов метода addChildViewController: также вызывает метод willMoveToParentViewController для ребенка: метод автоматически.
  2. Он обращается к свойству представления child для получения представления и добавляет его в свою собственную иерархию представлений. Контейнер устанавливает размер и положение ребенка перед добавлением вида; контейнеры всегда выбирают, где отображается содержимое ребенка. Хотя этот пример делает это, явно устанавливая фрейм, вы также можете использовать ограничения компоновки, чтобы определить позицию представления.
  3. Он явно называет ребенка didMoveToParentViewController: метод, чтобы сигнализировать о том, что операция завершена

Таким образом, в вашем случае, если вы пытаетесь добавить ViewController на ваш взгляд, который не работает. CartView должен быть UIViewController, а не UIView

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