NSMutableArray objectatindex始终显示最后一个Object

时间:2012-09-07 11:11:23

标签: cocoa-touch ios5 uiviewcontroller nsmutablearray multiple-views

我的问题是我的NSMutableArray始终使用objectatindex方法获取最后一个元素。

我有一个数组,其中包含一些派生自UIViewController的类。我想展示一个又一个的视图。

首先我填充数组:

ContactViewController *ContactView = [[ContactViewController alloc]init];
QuestionViewController *QuesView = [[QuestionViewController alloc]init];;
ContactView.mydelegate = self;
[QuesView setDelegate:self];


[Views addObject:ContactView];

Views =[[NSMutableArray alloc]initWithCapacity:11];
for (int i = 0; i < 11; i++) {
    [QuesView setParam:@"text" :i ];
    [Views addObject:QuesView];
}

之后我想获得实际视图并跳转到下一个:

-(IBAction)Button:(id)sender
{

    UIViewController *newView = [[UIViewController alloc]init];
    newView =  (UIViewController*)[Views objectAtIndex:enumerator];
    [self presentViewController:newView animated:YES completion: nil];
    enumerator++;
     //dismiss old view here....

    NSLog(@"number %d",[newView getNumber]);
}

未显示新视图,日志中的数字始终是数组的最后一个数字。我尝试在“视图”中使用for循环遍历所有元素,但每个对象中始终存在最后一个数字....

任何提示?

1 个答案:

答案 0 :(得分:2)

您可能想要创建多个QuestionViewController实例。但实际上你只创建了一个对象,并在其上调用了setParam 11次。

此行[Views addObject:ContactView]也无效,因为您创建了一个新的数组对象并将其分配给下一行的视图。与UIViewController *newView = [[UIViewController alloc]init]相同。希望你使用ARC,否则会造成内存泄漏!