-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 に答える