selectedIndexに関する UITabBarController ドキュメントは、次のように綴っています。
このプロパティは名目上、プロパティの配列へのインデックスを表し
viewControllers
ます。ただし、選択されたビュー コントローラーが現在Moreナビゲーション コントローラーである場合、このプロパティには値が含まれますNSNotFound
。このプロパティを設定すると、選択したビュー コントローラーが
viewControllers
配列内の指定されたインデックスにあるビュー コントローラーに変更されます。Moreナビゲーション コントローラー自体
を選択するに
は、selectedViewController
代わりにプロパティの値を変更する必要があります。
バージョン 3.0 より前のバージョンの iPhone OS では、このプロパティは選択されたタブ バー項目のインデックスのみを反映します。この値を、タブ バーには表示されず、代わりにMoreナビゲーション コントローラーによって管理されるビュー コントローラーのインデックスに設定しようとしても、効果はありません。
私の理解が正しければ、代わりに「 selectedViewControllerプロパティの値を変更する」必要がありますが、その中の VC ではなく、 More nav コントローラーを選択することしかできません。selectedViewControllerに関する同じドキュメントから:
このビュー コントローラーは、タブ バー インターフェースによって現在表示されているカスタム ビューを持つコントローラーです。指定されたView Controllerは
viewControllers
配列内にある必要があります。このプロパティに新しいView Controllerを割り当てると、現在表示されているビューが変更され、タブバーで適切なタブが選択されます。ビュー コントローラを変更すると、
selectedIndex
それに応じてプロパティも更新されます。このプロパティのデフォルト値は です
nil
。
iPhone OS 3.0 以降では、このプロパティを使用して、 viewControllersプロパティ内の任意のビュー コントローラを選択でき
ます。これには、Moreナビゲーション コントローラーによって管理され、タブ バー項目がタブ バーに表示されないビュー コントローラーが含まれます。これを使用して、 moreNavigationControllerプロパティ
から使用できるMore
ナビゲーション コントローラー自体
を選択することもできます。iPhone OS 3.0 より前のバージョンでは、 Moreナビゲーション コントローラと、タブ バー項目が表示される View Controller のサブセットのみを選択できました。タブ バー項目が表示されていないビュー コントローラーにこのプロパティを設定しようとしても、効果がありませんでした。
回避策としては、More nav コントローラーのpushViewController:animated:
メソッドがここで役立つのではないでしょうか? 各ビューに一意のタグ番号を付けます (バックグラウンドで適切な VC に関連付けることができます)。最後にアクティブだった VC のタグを保存します。
起動時に、タブ バー コントローラーで適切なビューを選択します。ビューのタグが最初の 4 つのタブ項目の VC に関連付けられていない場合は、Moreナビゲーション コントローラー内にある必要があります。VC を見つけて、それをMore nav コントローラーのスタックにプッシュし、More nav コントローラーを完全に選択します。
私はこれを試したことはありませんが、試してみる価値があるかもしれません! 唯一の潜在的な落とし穴 (そしてそれは大きな問題になる可能性があります) は、More nav コントローラーがセットアップされる前ではなく、セットアップされた後にその VC をプッシュする必要があることです。