2011-12-29 9 views
0

私はいくつかのMyViewオブジェクトを含む配列(以下のコードで配列と呼ばれる)を持っています。これらのオブジェクトをForループで繰り返し処理し、サブビューとして1つずつ追加していきます。それぞれ1秒遅れて追加します。以下のコードの問題は、すべてのオブジェクトが1秒後にすぐに追加されるということです。誰でも私が訂正する方法を提案できますか?ForループでperformSelectorを使用しますか? iPhone

ありがとうございます。

- (void)startMethod { 

    for (MyView * myview in array) { 

     [self performSelector:@selector(addSubView:) withObject:myview afterDelay:1]; 
    } 
} 

- (void)addSubView : (UIView *)view { 
    [soundController playSound]; 
    [self.view addSubview:view]; 
} 

答えて

1

ループを実行するための時間は実行セレクタを遅延させるために十分ではありません。あなたはおそらく、例えばカウンターを使って自分自身を遅らせる必要があります。

-(void)startMethod { 
    NSUInteger i = 0; 
    for (MyView * myview in array) { 
     i += 1; 
     [self performSelector:@selector(addSubView:) 
        withObject:myview 
        afterDelay:i]; 
    } 
} 
+2

'++ i'を使って、' i + = 1'の行全体を保存することができます... –

0
- (void)startMethod { 

    int i = 1; 
    for (MyView * myview in array) { 
    [self performSelector:@selector(addSubView:) withObject:myview afterDelay:i]; 
    i++; 
    } 
} 
0

実際には、その非常に単純:

- (void)startMethod { 
    int seconds = 0; 
    for (MyView * myview in array) { 
     [self performSelector:@selector(addSubView:) withObject:myview afterDelay:++seconds]; 
    } 
} 
0

簡単な解決策:ループの各反復の後に1秒の遅延を増加させます。

関連する問題