複数のクラスの管理とステート マシンの駆動を担当する高レベルのコントローラー クラスがあります。
状態ロジックの一部には、いくつかの異なる画面の一時的な表示が含まれます。これらの画面ごとに専用のビュー コントローラーがあり、高レベル コントローラーはこれらの他のコントローラー クラスを作成し、必要に応じてモーダル ビュー コントローラーとして表示します。
ただし、これらのビュー コントローラーの 1 つは非常に単純で、状態の進行に応じて変化するボタンとテキストがあります。高レベル コントローラーは、どの段階でどのテキストを表示するかを認識し、ボタンが押されたタイミングを認識する必要があるクラスです。
したがって、ビュー コントローラーは、高レベル コントローラーがテキストを設定するために呼び出すことができる API を提示する必要があります。また、ボタンが押されたときにコールバックできるように、高レベル コントローラーはビュー コントローラーのデリゲートである必要があります。これは私が取り除きたい不要な配管のようです。
したがって、ビュー コントローラーのアウトレットとアクションを高レベル コントローラーに移動できるので、この配管は必要ありません。しかし、View Controller には何も残っていません (ペン先からインスタンス化されています)。ですので、完全になくしたいと思います。
次に、それがなくなったら、これを高レベルのコントローラーに含めることを計画していました。
UIViewController *vc = [[UIViewController alloc] initWithNibName:@"TheNib" bundle:nil];
or should it be:
UIViewController *vc = [[UIViewController alloc] init];
[[NSBundle mainBundle] loadNibNamed:@"TheNib" owner:vc options:nil];
[[UIApplication sharedApplication].delegate.window.rootViewController presentViewController: self.vc animated: NO completion:nil];
ただし、これを実現するには、IB をどのように設定する必要がありますか?具体的には、a) ファイルの所有者を何に設定する必要がありますか? b) IB 内のビューは何に設定できますか?
高レベルのコントローラーは既に別のクラスから継承しているため、UIViewController から派生させることができないため、IB のビューに接続するためのビュー プロパティがないことに注意してください。
高レベルのビュー コントローラー内で作成された UIViewController に xib コンテンツを接続する簡単な方法はありますか?