1

次のView Controllerを呼び出しているときにエラーが発生します。アクションを続行するView Controllerを呼び出したいです。この画面は、最初に実行したときにのみ初めて表示されます。コントローラーは次のビューに進みません。

-(void)viewDidLoad
{
    welcomePage *temp = [[welcomePage alloc]initWithNibName:@"welcomePage" bundle:nil];       
    [self presentViewController:temp animated:YES completion:^(void){}];

}

警告: ウィンドウ階層にないビューで表示しようとしています!

4

5 に答える 5

0

これを試してみてください..

Appdelegate.m didFinishLaunchingWithOptions メソッドのコードを次のように変更します。

self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:self.viewController];
self.window.rootViewController = nav;

そして、このような ViewDidLoad メソッドで..

welcomePage *temp = [[welcomePage alloc]initWithNibName:@"welcomePage" bundle:nil];       
[self.navigationController presentViewController:temp animated:YES completion:nil];

ビューコントローラーを閉じるには、ウェルカムページボタンアクションで次のコードを記述できます

-(IBAction)dismiss:(id)sender{
[self dismissViewControllerAnimated:YES completion:nil];
}
于 2013-09-10T09:45:44.440 に答える
0

このエラーは、まだ画面に表示されていないビューから「ようこそページ」を表示しようとしていることを意味します。

コードを viewDidAppear メソッドに移動するだけではうまくいかないことを知っているので、次のことを試してみてください。

-(void)viewDidAppear
{
    [self presentWelcome];
}

- presentWelcome {
welcomePage *temp = [[welcomePage alloc]initWithNibName:@"welcomePage" bundle:nil];       
    [self presentViewController:temp animated:YES completion:^(void){}];
}

ここで何が起こるかというと、ビューが表示されると (つまり、ビュー階層にある場合)、コントローラーは他の viewController を呼び出す関数を開始します。これで問題が解決することを願っています。

これがお役に立てば幸いです!

于 2013-09-10T08:05:36.537 に答える
0

ストーリーボードを使用している場合: これを使用します

instantiateViewControllerWithIdentifier

    UIViewController objController  = [self.storyboard instantiateViewControllerWithIdentifier:@"StoryBoard Id"];
 [self presentViewController:objController animated:YES completion:nil];

Storybaord ID を設定するには、ここをチェックしてください。

于 2013-09-10T07:54:28.687 に答える