2011-11-22 126 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