2012-06-07 50 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) 
    // ... 
} 

祝你好運;)