0

UIViewControllerが起動したら、すぐに別のUIViewControllerを起動したいと思います。これは機能しません:

-(void) awakeFromNib {
    UIViewController *newcontroller = [[[UIViewController alloc] init] autorelease];
    ...
    [self presentModalViewController:newcontroller animated:YES];
}

これが機能するためには、次のようなメソッドのafterDelayを実行する必要があります。

-(void) awakeFromNib {
    [self performSelector:@selector(startNewController) withObject:nil afterDelay:0.5];
    [super init];
}
-(void) startNewController {
    UIViewController *newcontroller = [[[UIViewController alloc] init] autorelease];
    ...
}

遅滞なく動作させることは可能ですか?

4

2 に答える 2

0

代わりにメソッドを呼び出しstartNewControllerますviewDidAppear。これは、モーダルviewControllerを提示しようとしたときに、viewControllerが完全にロードされていないために発生します。そのため、待機すると機能します。

于 2011-09-22T09:15:04.347 に答える
0

実際には、そのような実装を強制するようなアプリケーションアーキテクチャを計画するべきではありません。でも、逃げ道がない時もあると思います。

私は言うでしょう:あなたの場合の最良の解決策はあなたのコントローラーをから呼び出すことです

viewDidAppear

また

viewWillAppear

于 2011-09-22T09:46:11.647 に答える