0

私が働いているアプリには3つのタブがあり、すべてが検索バーを持ち、ユーザーはどのタブでも検索を開始できます。検索が開始されると、それぞれのスタックにSerchViewControllerがプッシュされます。現在、ユーザーがタブを切り替えると、3つの異なる検索が行われます。 SearchVCがアクティブになっていることを確認するにはどうすればいいですか?ユーザーが別のタブで検索を開始すると、もう1つのSearchVCは前のタブでスタックからポップされますか?特定のViewControllerクラスが別のタブのスタックにプッシュされたときに、スタックからView Controllerをポップする方法はありますか?

どのようにI:

1)スタックの一方の既存SearchVCインスタンスへの参照を保持し、

2)SearchVCが提示された場合、別のナビゲーション・コントローラ・スタックからの通知を受信し、

3)、以前のスタックの中でそれをポップする(そしてすべてのVCをポップする)?例えば

ユーザーが第一のタブをタップすると、スタックは次のように構築します。

UITabBarController - (SearchVCスタックから理論的に構築することができます> - >UINavigationController - >ProfileVC - >GalleryVC - >SearchVCほとんど無限) - >ProfileVC検索結果から - >GalleryVC - >LikesVC - >ProfileVC - >など

ユーザーが第二のタブをタップすると、スタックは次のように構築します。再び、スタックはここからほぼ無限に構築することができます。最初のタブにはSearchVCが表示されるので、タブを切り替えるときはSearchVCになります。ユーザーが最初のタブに戻ると、ユーザーが検索を開始する直前のGalleryVCまたはVCに移動し、SearchVCがスタックにプッシュされます。だから、

答えて

1

、解決策は、私がSearchVCを提示NavigationControllerクラスにデリゲートプロトコルを追加して検索が提示されたUITabBarControllerNavigationControllerからのメッセージを送っていた思い付きました。

UITabBarControllerのデリゲートメソッドは、そのナビゲーションコントローラの配列を横断し、それを飛び出し、その後SearchVCにスタックをポップとすることにより、現在選択されている1(self.selectedViewController)ではない場合は、タブの上にSearchVCを閉じます:

[self popToViewController:searchViewController animated:NO]; 
[super popViewControllerAnimated:NO]; 
関連する問題