2011-12-29 19 views
0

我有一個數組(在下面的代碼中稱爲數組),其中包含一些MyView對象。我試圖在For循環中迭代這些對象,並將它們逐個添加爲子視圖,每次延遲一秒鐘。下面的代碼的問題是所有的對象在延遲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'行...... – 2011-12-29 14:56:41

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

簡單的解決方案:在循環的每次迭代後一秒增加延遲。