プロジェクトのカスタム UITabBar ソリューションを実装しました。基本的に、項目が 5 つ以上ある場合は、ユーザーが追加のタブ項目をスクロールできるようにし、[その他] ボタンを非表示にする scrollView を使用します。同様のルック アンド フィールは、Weather Channel アプリでも見ることができます。
各タブ バー アイテムは、各タブのビューのスタックを管理する UINavigationController に対応します。私が抱えている問題は、5 つ以上のタブ項目がある場合、タブ 5 以降ではナビゲーション スタックが正しく維持されないことです。そのタブに戻って最初のページに戻るたびに、moreNavigationController がナビゲーション スタックを強制終了しているようです。
次のように setSelectedViewController メソッドをオーバーライドしました。
- (void) setSelectedViewController:(UIViewController *)selectedViewController {
[super setSelectedViewController:selectedViewController];
if ([self.moreNavigationController.viewControllers count] > 1) {
self.moreNavigationController.viewControllers = [[NSArray alloc] initWithObjects:self.moreNavigationController.visibleViewController, nil];
}
}
このコードは、左側のナビゲーション ボタンの [その他] 機能を削除しますが、ナビゲーション スタックの維持の問題は解決しません。他のすべてのタブは正常に機能します。いくつかのビューをたどることができ、そのタブを離れて戻った後もスタックは維持されます。これが複雑な問題であることは理解しています。明確に説明できる領域があれば教えてください。ありがとう!