12

iOSアプリ開発初心者です。行の1つを選択すると、didSelectRowAtIndexPathを使用して別のUIViewControllerを取得するように、テーブルビューコントローラーを接続しました。この UIViewController 内にコンテナー ビューがあり、didSelectRowAtIndexPath が呼び出された行のインデックスを (当面の間) 表示します。セグエを使用してこれを行いたいのですが、問題は、コンテナー ビューを使用して形成されたビュー コントローラーへの参照を取得する方法がわからないことです。prepareForSegue で segue.destinationViewController を使用して宛先ビュー コントローラーを取得できることはわかっていますが、コンテナー ビューのために読み込まれるビュー コントローラーへの参照を取得するにはどうすればよいですか。私は iOS 6 用のアプリを作成しています。また、UI には Storyboard を使用しています。ありがとう

編集:

この質問は基本的に、UIViewController-1 内にある UIContainerView が指す UIViewController-2 への参照を取得する方法に帰着します。UIViewController-1 は、UITableViewController の行を選択することによってトリガーされます

UITableViewController (与える行を選択)---> UIViewController-1 を含む....ContainerView ---> UIViewController-2(ContainerView に関連付けられた ViewController) .

4

5 に答える 5

4

他の人が言ったように、prepareForSegue をオーバーライドして子ビュー コントローラーを見つけることができます。

-(void)viewDidLoad {
    for (UIViewController* vc in self.childViewControllers) {
            if ([vc isKindOfClass:MyChildController.class]) {
               // do something here
            }
    }
}

推奨するわけではありませんが、ストーリーボードを使用している場合、childControllers 配列の順序はインターフェイス ビルダーの順序とまったく同じであるため、childViewControllers[0]、[1] を直接参照できます。

于 2014-06-05T14:35:04.007 に答える
1

あなたは正しいですprepareForSegue。はdestinationViewController、宛先のView Controllerを提供します。

なぜ他に何かが必要なのかわかりません。宛先コントローラーに別のコントローラーを含めたい場合 (なぜですか?)、宛先コントローラー@propertyにそのコントローラーを指す a を与えることができ、このプロパティを読み取って設定することができます。

しかし、疑問が残ります - なぜそれをしたいのですか?

于 2013-09-07T11:08:27.347 に答える
0

シミュレートされたナビゲーション バーを作成するだけの場合、コンテナー ビューと子ビュー コントローラーを使用すると、必要以上に複雑になり、メモリを大量に消費します。シミュレートされたナビゲーション バーをビュー コントローラー 1 のビューとして作成し、タイトルを含むラベルを付け、ラベルをアウトレットとして接続し、必要に応じてラベルを設定します。はるかにクリーンでシンプルです。

于 2013-09-07T14:05:19.087 に答える