2011-11-22 87 views
0

我試圖改變25個按鈕的圖像與更改之間的延遲時間,它不起作用。圖像按鈕不改變

的代碼是:

do { 
    if (Anterior > -1) { 
     [[BtnArray objectAtIndex(Anterior)] setImage:Nil]; 
    } 
    [[BtnArray objectAtIndex:(Gira[J])] 
     setImage:[NSImage imageNamed:@"Encen.png"]]; 
    Anterior = Gira[J]; 
    Delay(Espera,&junk); 
    ++J; 
} while (J<25); 
+0

什麼是'前','Gira','延遲()','埃斯佩拉','垃圾'? 「它不工作」是不夠的。什麼不工作? – sidyll

+1

究竟什麼不行?延遲或圖像變化? Delay()函數如何實現? –

+1

如果您的'Delay()'只是對'sleep'的調用,它將不起作用。 'sleep'被阻塞,並且UI必須等待整個'do {} while()'循環在更新之前終止。 – Cyrille

回答

0

沒有測試過,但你可以嘗試這樣的事:

float delay = .2; 
for (UIButton *btn in btnArray) { 
    [btn performSelector:@selector(setImage:) withObject:[UIImage imageNamed:@"Encen.png"] afterDelay:delay]; 
    delay += .2; 
} 

還是在呼籲BTN的地方有自己的功能

float delay = .2; 
for (UIButton *btn in btnArray) { 
    [self performSelector:@selector(changeImageForButton:) withObject:btn afterDelay:delay]; 
    delay += .2; 
} 

那麼在那個功能呢:

[btn setImage:[UIImage imageNamed:@"Encen.png"] forState:UIControlStateNormal]; 
+0

謝謝,但程序在延遲發生時繼續運行,效果我不需要顯示 – AlextaNET

+0

哦,你想阻塞主線程嗎?如果是這樣,你可以嘗試睡眠(延遲); – tiltem

+0

我嘗試了睡眠(timedelay),但電腦進入睡眠... XD ...這個應用程序是爲mac而不是iphone。 – AlextaNET