0

私の問題は、NSMutableArray常にobjectatindex-method で最後の要素を取得することです。

から派生したいくつかのクラスを持つ配列があります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]);
}

新しいビューは表示されず、ログ内の番号は常に配列の最後の番号です。「Views」のすべての要素を for ループで処理しようとしましたが、すべてのオブジェクトには常に最後の番号があります....

ヒントはありますか?

4

1 に答える 1

2

おそらく、複数の QuestionViewController インスタンスを作成したいと思うでしょう。しかし、実際にはオブジェクトを 1 つだけ作成し、それに対して setParam を 11 回呼び出します。

また[Views addObject:ContactView]、新しい配列オブジェクトを作成し、次の行でビューに割り当てるため、この行は効果がありません。と同じことUIViewController *newView = [[UIViewController alloc]init]。ARC を使用していることを願っています。そうしないと、メモリ リークが発生します。

于 2012-09-07T12:47:07.500 に答える