-1

我有 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];

在这种情况下,它在视图加载之前处于休眠状态,并且它也不会进入下一个屏幕。那么代码有什么问题呢?

4

4 回答 4

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];


}
于 2012-06-07T11:31:33.323 回答
1

最简单的解决方案是在一段时间后触发一个事件。我建议使用 performSelector。

- (void) hide {
   //For example. 
   [self dismissModalViewController];
}

- (void) viewDidLoad {
   //Setup my image.
   [self performSelector:@selector(hide) withObject:nil afterDelay:3];
}
于 2012-06-07T11:30:14.530 回答
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;
}
于 2012-06-07T11:31:26.163 回答
1

另外,你sleep(5)在主线程里面做了一个,这很糟糕。

尝试类似的东西

[self performSelectorOnBackground:@selector(hide) withObject:nil]

并在方法中做你想要(和sleep(5))的事情,-(void)hide比如

-(void) hide {
    sleep(5)
    // ...
}

祝你好运 ;)

于 2012-06-07T11:33:31.483 回答