2013-03-01 71 views
2

我有一个主视图控制器,我在其上添加了来自不同类型的子控件:IntroViewController和ChapterViewController。我有他们两个在我的故事板,这是我怎么加10(我的主视图控制器具有滚动视图和我向左滑动时,下一个视图控制器(S)显示):如何在主视图控制器上添加不同的子视图控制器

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

} 

此功能将增加IntroViewController类型的10个视图控制器。 但现在他们有相同的名称,我不知道如何访问这些不同的introviewcontrollers现在,例如如果我需要更改第五个视图控制器参数?喜欢的东西:

 introViewController.initialText = @"test"; 

但由于他们具有相同的名称我不知道如何做到这一点?

+0

给点头看看并访问它[ – iPatel 2013-03-01 14:57:45

+0

我相信* [self childViewControllers]; *将返回一个数组引用所有子ViewController。你可以试试吗? – rdurand 2013-03-01 14:58:51

回答

9

你可以用childViewControllers财产得到他们。

Apple's doc

childViewControllers:

的视图控制器是在视图控制器层次结构中的接收器的子级的数组。 (只读)

@property(nonatomic, readonly) NSArray *childViewControllers 

他们被编入索引以同样的方式,因为它们是在控制器层次。所以在你的循环中创建的第五个viewController将与

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

我认为你给我的代码行有问题,通常我会改变它上面的文本:introViewController.initialText = @“test”;以及我如何在自己的路上做到这一点?提前致谢。 – Shinonuma 2013-03-01 15:09:41

+0

Nvm,它的((IntroViewController *)[self.childViewControllers objectAtIndex:0])。initialText = @“Test”; – Shinonuma 2013-03-01 15:12:03

+1

依靠索引是非常尴尬的。有没有办法通过名称/标识符来获得孩子? – user3246173 2016-08-01 23:49:06

相关问题