0

我如何将这四个视图控制器添加到数组中

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]autorelease];    
ContainerViewController  *container= [[[ContainerViewController alloc]init]autorelease];
self.window.rootViewController = container;  
NSMutableArray *controllers = [NSMutableArray array];
for (int i=0; i<23; i++)
{
    First *first = [[First alloc] init];
    Second *second = [[Second alloc] init];
    Third *third = [[Third alloc] init];
    Fourth *fourth = [[Fourth alloc] init];

    [controllers addObject:first];
    [controllers addObject:second];
    [controllers addObject:third];
    [controllers addObject:fourth];
    }

 [container setSubViewControllers:controllers];
[window makeKeyAndVisible];
return YES;

收到黄色警告,指出找不到实例方法 setSubViewController 返回类型默认为 id

感谢帮助。

4

2 回答 2

2

要将视图控制器添加到数组中,不需要 for 循环。删除循环,并添加:

First *first = [[First alloc] init];
    Second *second = [[Second alloc] init];
    Third *third = [[Third alloc] init];
    Fourth *fourth = [[Fourth alloc] init];

    [controllers addObject:first];
    [controllers addObject:second];
    [controllers addObject:third];
    [controllers addObject:fourth];

对于container:中的视图控制器setSubViewControllers不是有效的方法。但是,您可以使用addChildViewController. 你可以遍历你的数组,然后调用 [container addChildViewController:x#ViewController]; 就像是:

for (id thisViewController in controllers) {
thisViewController = (UIViewController *)thisViewController;
[container addChildViewController:thisViewController];
}

注意:我没有测试过这段代码。如果您有任何问题,请告诉我。

于 2012-06-29T20:10:38.143 回答
1

设置这个

- (void)setSubViewControllers:(NSArray *)subViewControllers;

在 .h 中ContainerViewController 这将帮助您摆脱警告,但我不确定您在逻辑上做什么,而且我建议您在循环中释放您的子视图控制器,然后再分配它们......

于 2012-06-29T20:11:41.237 回答