1. ホーム
  2. iphone

[解決済み] Storyboard - AppDelegateのViewControllerを参照する。

2022-08-26 11:24:12

質問

次のシナリオを考えてみましょう:私はストーリーボードベースのアプリを持っています。ストーリーボードにViewControllerオブジェクトを追加し、このViewController用のクラスファイルをプロジェクトに追加し、IBアイデンティティインスペクタで新しいクラスの名前を指定します。さて、このViewControllerをAppDelegateからどうやってプログラムから参照するのだろうか?関連するクラスで変数を作り、それをIBOutletプロパティにしましたが、コード内で新しいViewControllerを参照する方法が見当たりません。

つまり、AppDelegate 内では以下のようにベースの ViewController にアクセスすることができます。

(MyViewController*) self.window.rootViewController

が、ストーリーボードに含まれる他のViewControllerはどうでしょうか?

どのように解決するのでしょうか?

このページでは のドキュメントをご覧ください。 を見てください。 -[UIStoryboard instantiateViewControllerWithIdentifier:] . これにより、IB Attributes Inspectorで設定した識別子を使用して、ストーリーボードからビューコントローラをインスタンス化することができます。

サンプルコードを追加するために編集しました。

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                                         bundle: nil];

MyViewController *controller = (MyViewController*)[mainStoryboard 
                    instantiateViewControllerWithIdentifier: @"<Controller ID>"];