2013-03-01 3 views
2

У меня есть контроллер основного вида, где я добавляю на него детей из разных типов: IntroViewController и ChapterViewController. У меня есть оба они в моей раскадровке и это, как я добавляю 10 (мой основной контроллер вида имеет Scrollview и когда я палец влево, контроллер следующего вида (ы) шоу):Как получить доступ к различным контроллерам дочерних представлений при добавлении на главный контроллер представления

for(int i = 0; i<10; i++) { 
    IntroViewController *introViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"View1"]; 
    [self addChildViewController:introViewController]; 

} 

Эта функция добавит 10 viewcontrollers типа IntroViewController. Но теперь у них одно и то же имя, и я не уверен, как получить доступ к этим различным introviewcontrollers сейчас, например, что делать, если мне нужно изменить параметры 5-го контроллера? Что-то вроде:

 introViewController.initialText = @"test"; 

Но поскольку они имеют такое же имя, я не знаю, как это сделать ...

+0

дает чуть-чуть, чтобы обй вид и доступ к нему [MyView bringSubviewToFront: [MyView viewWithTag: 1]]; – iPatel

+0

Я верю * [self childViewControllers]; * вернет массив со ссылками на все дочерние ViewControllers. Можете ли вы попробовать это? – rdurand

ответ

9

Вы можете получить их с childViewControllers собственности.

От Apple's doc:

childViewControllers:

Массив контроллеров зрения, которые являются потомками приемника в иерархии контроллера представления. (Только чтение)

@property(nonatomic, readonly) NSArray *childViewControllers 

Они индексируются точно так же, как они в иерархии контроллера. Таким образом, пятая ViewController созданная на петле будет таким же, как

(UIViewController*)[self.childViewControllers objectAtIndex: 4] 
+0

Я думаю, что что-то не так с строкой кода, которую вы мне дали, обычно я бы изменил текст на нем следующим образом: introViewController.initialText = @ "test"; и как именно мне нужно это делать на вашем пути? Заранее спасибо. – Shinonuma

+0

Nvm, его ((IntroViewController *) [self.childViewControllers objectAtIndex: 0]). InitialText = @ "Test"; – Shinonuma

+1

Опираясь на индекс довольно неудобно. Есть ли способ получить ребенка по имени/идентификатору? – user3246173

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