2

標準の拡張 UIViewController (ParentViewController または PVC と呼ばれる) があり、ChildViewController または CVC によって駆動されるコンテナーまたは子ビューが必要です。

プログラムで、PVC で addChild:CVC を呼び出し、didMoveToParentViewController などの呼び出しを管理できることがわかります。ただし、Interface Builder でこれを行う方法があることを願っています。

そこで、PVC のインスタンスをレイアウトし、ContainerView を PVC のビューにドラッグして、子ウィンドウへのセグエを作成しました。そのウィンドウで、ChildViewController のクラス タイプを割り当てました。これまでのところ、これは素晴らしいように見えますが、これをプログラムで PVC から参照するにはどうすればよいですか? いつものことを試してみましょう: PVC クラス拡張では、次のように宣言しました。

@property (nonatomic, strong) IBOutlet ChildViewController* cvc;

IB に切り替えて PVC インスタンスを強調表示し、接続インスペクターを選択すると、cvc プロパティが表示されますが、containerView インスタンスに接続できません (クラス タイプが適切に設定されていても)。ドラッグ (線を引く) はできますが、実際に接続することはできません。どうして??

これはIBでは不可能だと思いますが、おそらくこれを間違って見ているのでしょうか?

子ビューに関する Apple のドキュメントを読みましたが、IB に意図したことを実行させることができない場合は、プログラムでこれを実行する準備ができています。

4

1 に答える 1

3

cvcはPVCの子ビューコントローラーであるため、childViewControllersプロパティを使用して参照を取得できます。これは、IBでアウトレットを接続するのではなく、コードで実行します。PVCのviewDidLoadメソッドで、次のようにします。

self.cvc = (ChildViewController *)self.childViewControllers[0];

Xcodeでは、2つの異なるコントローラー間にアウトレットを接続することはできません。そのため、cvcは子ビューコントローラーとして組み込まれていますが、それでも別のビューコントローラーです。

于 2013-02-21T17:29:56.463 に答える