我想更改UIImageView的图像,3秒后返回第一张图片......这是我的代码:
-(void)change: (UIImageView *)sender
{
UIImage *image = [UIImage imageNAmed: @"anImage"];
[sender setImage:image];
[self performSelector: @selector(doNothing) withObject:nil afterDelay:3];
[sender setImage: [UIImage imageNamed: @"firstImage"]];
}
它不起作用。
答案 0 :(得分:0)
尝试:
-(void)change: (UIImageView *)sender
{
UIImage *image = [UIImage imageNAmed: @"anImage"];
[sender setImage:image];
[sender performSelector: @selector(setImage:) withObject:[UIImage imageNamed: @"firstImage"] afterDelay:3];
}
performSelector
计划选择器调用有一些延迟。它不会延迟当前方法的执行
答案 1 :(得分:0)
您是否也可以发布doNothing
的代码?
如果doNothing
确实没有做任何事情,那么正在发生的事情是从下一行执行3秒后调用doNothing
方法:
[self performSelector: @selector(doNothing) withObject:nil afterDelay:3];
但是 就是这样,在doNothing
方法计划运行之后,直接执行以下行三秒钟:
[sender setImage: [UIImage imageNamed: @"firstImage"]];
换句话说,方法执行不等待你的doNothing
方法完成,它只是继续,并且doNothing
在一个单独的线程上运行。
答案 2 :(得分:0)
你说在延迟3秒后执行函数doNothing。因此,在3秒后它将被调用,因此在doNothing函数中将图像更改回firstImage。