

以下のようなコードを書いたのですが、実行するとwhose view is not in the window hierarchy!となってしまいます。

LoginViewController.m

[code]

    -(void)viewDidAppear:(BOOL)animated{
      [super viewDidAppear:animated];
    
      [self presentViewController:
                [self.storyboard
                    instantiateViewControllerWithIdentifier:@"AgreementVC"]
                         animated:YES
                       completion:nil];
    }
    
[/code]

@"AgreementVC"はAgreementViewControllerに割り当てられたstoryboard IDです。  
LoginViewControllerは一番初めに表示されます。


CC BY-SA 3.0
2015-02-01T04:52:12.813
5679
2015-08-31T09:26:18.480
7500
question
objective-c
viewDidAppearで画面遷移をするとwhose view is not in the window hierarchy!と出る


手元で試してみましたが、問題なく遷移できました。  
試した手順  
・Main.storyboardにUIViewControllerを追加  
・CustomViewControllerクラスを追加  
・Main.storyboardに追加したUIViewControllerにCustomViewControllerを関連づけ  
class:CustomViewController  
Storyboard ID:CustomVC  
・（プロジェクト作成時に作られる）ViewControllerに下記コードを追加

[code]

    -(void)viewDidAppear:(BOOL)animated
    {
      [super viewDidAppear:animated];
      [self presentViewController:
                [self.storyboard
                    instantiateViewControllerWithIdentifier:@"CustomVC"]
                         animated:YES
                       completion:nil];
    }
    
[/code]

また、Segueを使用したパターンも試してみましたが、こちらも問題なく動作しました。

[code]

    [self performSegueWithIdentifier:@"toCustomVC" sender:self];
    
[/code]

該当のエラー（whose view is not in the window
hierarchy!）はviewDidLoadで画面遷移などの処理を行った場合に発生するので、viewDidLoadで何か処理を行っているのであれば、一度コメントアウトして試してみてはいかがでしょうか？


CC BY-SA 3.0
2015-02-02T02:32:43.680
5728
2015-02-02T02:32:43.680
3516
5679
answer