【发布时间】:2016-07-11 01:47:35
【问题描述】:
我正在开发的应用程序有三个标签,它们都有一个搜索栏,用户可以在任何标签上启动搜索。当搜索开始时,SerchViewController 被推送到每个相应的堆栈上。目前,当用户在选项卡之间切换时,会进行三种不同的搜索。如何确保只有一个 SearchVC 处于活动状态,并且当用户在不同的选项卡上开始搜索时,另一个 SearchVC 在前一个选项卡中从堆栈中弹出?
我该怎么做:
1) 在其中一个堆栈上保留对现有 SearchVC 实例的引用,
2) 如果出现SearchVC,则从另一个导航控制器堆栈接收通知,
3) 并在前一个堆栈中将其弹出(以及所有后续 VC)?
例如:
用户点击第一个选项卡,堆栈构建如下:
UITabBarController -> UINavigationController -> ProfileVC -> GalleryVC -> SearchVC -> (理论上,来自SearchVC的堆栈几乎可以无限建立)-> ProfileVC来自搜索结果 -> GalleryVC -> LikesVC -> ProfileVC -> 等等
用户点击第二个选项卡,堆栈构建如下:
UITabBarController -> UINavigationController -> LibraryVC -> SearchVC -> 再次,堆栈几乎可以无限地从这里构建。我需要在第一个选项卡中弹出SearchVC,因此在选项卡之间切换时只有一个SearchVC。当用户返回到第一个选项卡时,它应该将用户带到用户开始搜索之前的GalleryVC 或VC,并且SearchVC 被压入堆栈。
【问题讨论】:
标签: ios uiviewcontroller tabs uinavigationcontroller uitabbarcontroller