まず、この場合presentedViewControllerを使用しないでください。これは、モーダルに提示したView Controllerへの参照を取得するためのものです-selectedViewControllerが必要なものです。
はい、viewDidLoad は、まだ存在しないため、選択したビュー コントローラーへの参照を取得するのに不適切な場所です。
タブ バー コントローラーは、次の 2 つの手順で作成します。
まず、インスタンスを作成します。これは、alloc、init、およびビューのライフサイクル メソッドが呼び出されるポイントです。
次に、View Controller の配列を設定します。
viewDidLoad で参照を取得しようとしている場合は、タブ バー コントローラーにビュー コントローラーの配列を割り当てる前に、最初のステップで参照を取得しようとしています。
すべきことは、タブ バー コントローラーで物事を開始するためのカスタム メソッドを作成することです。このメソッドは、タブ バー コントローラーを作成するクラスから呼び出します。ビュー コントローラーの配列をタブ バー コントローラーに割り当てた後、必ずそのメソッドを呼び出してください。次に、カスタム メソッド内で selectedViewController を使用して有効な参照を取得できます。
編集:ストーリーボードの場合、コードをviewDidAppearに移動します-ビューが表示される前にviewDidLoadが呼び出されるため、ビューコントローラーはまだ選択されていません。viewDidAppear で、selectedViewController (presentedViewController ではない) を使用すると、その時点で有効な参照が含まれます。