2017-04-26 16 views
0

私はタブバーで利用可能なオプションの1つであるタブバーナビゲーションコントローラを持っています。以下のオプション名をこの場合は「注文履歴」です。Swiftのナビゲーションコントローラを使用せずにタブバーメニューを子ビューに伝播する方法

Firebusデータベースからデータを取得するためのアクティビティインジケータ付きの単純なView Controllerが必要です。すべてのデータが収集されると、私はifステートメントを持っています。 Firebaseへのクエリで値が返されなかった場合は、他のView Controllerにセグをして、まだ注文していないことをユーザーに示します。ただし、Firebaseへのクエリで注文履歴データが返された場合は、すべてのデータを整理して表示するテーブルビューコントローラを使用したいと考えています。

私が抱えている問題は、上記の子ビューのそれぞれの下部にタブバーメニューがあることです。私はナビゲーションコントローラの中に最初のビュー(アクティビティインジケータ付きのビュー)を埋め込むことでこれを行うことができます。しかし、いったん別のタブバーアイテムをタップしてから、このタブバーアイテム(「Order History」タブバーアイテム)に戻ると、アクティビティインジケータを使って最初のビューが表示されず、もう一度データベース。代わりに、Navigationスタックに表示されている最後のビューに戻ります。これは、まだユーザーが注文していないことを示すビューです。毎回データが確実に更新されるように、毎回データベースへのクエリが実行されることが重要です。

これを最もうまく実装する方法についてのご意見をお待ちしております。私はこのすべてのためにストーリーボードを使用しています。ありがとう

答えて

0

タブバーのviewControllerとしてorderHistoryNavControllerをそのまま保つことができます。タブバーのナビゲーションコントローラに弱い参照を付けたまま、UITabbar:didSelectViewControllerをオーバーライドします。

FUNCのtabBarController(_ tabBarController:UITabBarController、didSelectのViewController:のUIViewController){ orderHistoryNavController.popToRootViewController(NO) }

これは活動の指標に現れます(隠れている場合でも)いつでも新しいタブが選択されています。

+0

「タブバーのナビゲーションコントローラに弱い参照を保持する」とはどういう意味ですか? – Jace

+0

私は弱い参照をdidSelectViewControllerからポップするのと同じように保ちます。また、タブバーコントローラの 'viewController'コンセントから取得することもできます。 – FryAnEgg

+0

let orderHistoryNavController = tabBarController.viewControllers [orderHistoryTabIndex] – FryAnEgg

関連する問題