我有UIImageView的视图控制器。在视图中确实加载我想在图像视图上设置特定时间间隔的图像。应该清除该图像视图,应用程序应切换到下一个屏幕。我试过以下代码无效:
welcomeImage.image=[UIImage imageNamed:@"abc.png"];
sleep(5);
homeScreenController *controller=[[homeScreenController alloc]initWithNibName:@"homeScreenController" bundle:nil];
controller.modalTransitionStyle=UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:controller animated:YES];
在这种情况下,它在视图加载之前处于休眠状态,并且它也不会进入下一个屏幕。那么代码有什么问题呢?
答案 0 :(得分:4)
使用以下代码/ ..
- (void)viewDidLoad
{
[super viewDidLoad];
[self performSelector:@selector(goToNextView) withObject:nil afterDelay:5.0];
}
- (void)goToNextView
{
homeScreenController *controller=[[homeScreenController alloc]initWithNibName:@"homeScreenController" bundle:nil];
controller.modalTransitionStyle=UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:controller animated:YES];
}
答案 1 :(得分:1)
最简单的解决方案是在一段时间后启动一个事件。我建议使用performSelector。
- (void) hide {
//For example.
[self dismissModalViewController];
}
- (void) viewDidLoad {
//Setup my image.
[self performSelector:@selector(hide) withObject:nil afterDelay:3];
}
答案 2 :(得分:1)
你可以使用NSTimer 像这样的东西
- (void) viewDidLoad {
.......
NSTimer *timer = [[NSTimer scheduledTimerWithTimeInterval:(2.5)
target:self selector:@selector(hideImage)
userInfo:nil repeats:NO] retain];
....
}
- (void)hideImage
{
yourImage.hidden = YES;
}
答案 3 :(得分:1)
另外,你在主线程中创建了一个sleep(5)
,这很糟糕。
尝试类似
的内容[self performSelectorOnBackground:@selector(hide) withObject:nil]
并在方法sleep(5)
中执行您想要的事情(以及-(void)hide
)
-(void) hide {
sleep(5)
// ...
}
祝你好运;)