0

詳細セクションの SplitViewController 内に TabBarController があります。

TabBarController のクラスで、TabController に現在表示されているビューへの参照を取得したいと考えています。

私は試してみself.selectedViewControllerましself.presentedViewControllerたが、これらは両方ともnullです。viewDidLoadTabBarControllerでそれらをテストしています。

これは正しい場所ですか?早い段階で呼び出していますか (つまり、選択したタブのビューが設定される前ですか?)

ありがとう

ジェームズ

4

1 に答える 1

0

まず、この場合presentedViewControllerを使用しないでください。これは、モーダルに提示したView Controllerへの参照を取得するためのものです-selectedViewControllerが必要なものです。

はい、viewDidLoad は、まだ存在しないため、選択したビュー コントローラーへの参照を取得するのに不適切な場所です。

タブ バー コントローラーは、次の 2 つの手順で作成します。

まず、インスタンスを作成します。これは、alloc、init、およびビューのライフサイクル メソッドが呼び出されるポイントです。

次に、View Controller の配列を設定します。

viewDidLoad で参照を取得しようとしている場合は、タブ バー コントローラーにビュー コントローラーの配列を割り当てる前に、最初のステップで参照を取得しようとしています。

すべきことは、タブ バー コントローラーで物事を開始するためのカスタム メソッドを作成することです。このメソッドは、タブ バー コントローラーを作成するクラスから呼び出します。ビュー コントローラーの配列をタブ バー コントローラーに割り当てた後、必ずそのメソッドを呼び出してください。次に、カスタム メソッド内で selectedViewController を使用して有効な参照を取得できます。

編集:ストーリーボードの場合、コードをviewDidAppearに移動します-ビューが表示される前にviewDidLoadが呼び出されるため、ビューコントローラーはまだ選択されていません。viewDidAppear で、selectedViewController (presentedViewController ではない) を使用すると、その時点で有効な参照が含まれます。

于 2013-03-05T10:10:27.650 に答える