2016-09-20 12 views
0

ストーリーボードには、インスペクタペインに「イニシャルビューコントローラはありますか?」というプロパティがあります。プログラムでこのプロパティにアクセスするにはどうすればよいですか?私はそれを変更したくない。私は、ビューコントローラが現在初期ビューコントローラであるかどうかをチェックしたいだけです。 AppDelegateで、View Controllerをルートビューコントローラにする条件を指定しました。いったん実際にルートビューコントローラになったら、ビューコントローラ自体からいくつかのコードを実行したい(ただし、ルートビューコントローラの場合のみ)。ですから、私はViewDidLoadメソッドからコードを実行するだけではありません。私は、ビューコントローラが最初にルートビューコントローラであるかどうかを確認したいのですが、もしそうなら、次にいくつかのコードを実行したいと思います。何か案は?View Controllerが初期View Controllerであるかどうかを確認するにはどうすればよいですか? (SWIFT 3)

+0

私はあなたが本当に探しているのは、ストーリーボードの最初のVCとは関係なく、現在のrootViewControllerが何であるかをチェックする方法です。 – BJHStudios

+0

ルートビューコントローラーのビューにタグを付け、その後にタグ/ビューを確認することができます。 – Dasem

+0

@BJHStudiosええ、申し訳ありませんが、それは私が意味するものではありません。これらの2つの重要な違いが何であるかはわかりませんでしたが、初期ビューコントローラ(アプリが起動した後に最初に表示されるビューコントローラ)を確認する方法を探しています。 AppDelegate内のコードを変更する必要があるかもしれません。なぜなら私は自分のVCをrootViewControllerとして設定していますが、最初に表示される最初のVCとして設定するだけです。 –

答えて

1

ストーリーボードの初期表示コントローラーは、アプリケーションのルートビューコントローラーと同じではありません。たとえば、独自の初期View Controllerを持つ複数のストーリーボードがある場合があります。コードによっては、現在のrootViewControllerも変更されている可能性があり、アプリケーションから起動された初期View Controllerとは異なります。現在のビューコントローラは、ルートビューコントローラである場合

を確認するには、これを使用する:

if self == UIApplication.shared.keyWindow?.rootViewController { 
     /*do stuff*/ 
    } 

は、しかし、あなたがこれを置く場所について注意してください。私はviewDillLoadではなく、viewWillAppearまたはviewDidAppearでチェックを行います。

+0

@FreddyBenson:これは正解です。あなたの質問に答えた場合は、それを正しい答えとして選択してください。 – mttdbrd

関連する問題