2012-06-07 48 views
-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

使用下面的代码/ ..

- (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

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

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

- (void) viewDidLoad { 
    //Setup my image. 
    [self performSelector:@selector(hide) withObject:nil afterDelay:3]; 
} 
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; 
} 
1

而且,你的主线程里面做了一个sleep(5),这是很糟糕。

尝试像

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

,做你想要的东西(和sleep(5))的方法-(void)hide里面像

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

祝你好运;)