ios - 如何在 Swift 中不使用导航 Controller 的情况下将选项卡栏菜单传播到 subview

标签 ios swift

我有一个选项卡栏导航 Controller ,对于选项卡栏上可用的选项之一,我想执行以下操作,本例中的选项名称是“订单历史记录”。

我想要一个带有事件指示器的简单 View Controller 来从我的 Firebase 数据库获取数据。收集完所有数据后,我就有了一个 if 语句。如果对 Firebase 的查询没有返回任何值,我想转向另一个 View Controller ,该 Controller 将向用户显示他/她尚未下任何订单。但是,如果对 Firebase 的查询返回任何订单历史数据,那么我想转至一个 TableView Controller ,该 Controller 将以有组织的方式显示所有数据。

我遇到的问题是我希望在上述每个 subview 的底部都有标签栏菜单。我知道我可以通过将第一个 View (带有事件指示器的 View )嵌入到导航 Controller 中来做到这一点。但是,我注意到,一旦我点击不同的选项卡栏项目,然后返回到此选项卡栏项目(“订单历史记录”选项卡栏项目),它不会显示带有事件指示器的第一个 View 来执行对再次数据库。相反,它会返回到导航堆栈中显示的最后一个 View ,该 View 向用户显示他/她尚未下任何订单。重要的是每次都执行对数据库的查询,以确保每次都刷新数据。

如果您能提供有关如何最好地实现这一点的意见,我将不胜感激。我正在使用 Storyboard来完成这一切。谢谢

最佳答案

您可以将 orderHistoryNavController 保留为选项卡栏中的 viewController。在标签栏中保留对导航 Controller 的弱引用,然后重写 UITabbar:didSelectViewController ,如下所示。

func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) { orderHistoryNavController.popToRootViewController(NO) }

每当选择新选项卡时,这都会弹出到事件指示器(即使隐藏)。

关于ios - 如何在 Swift 中不使用导航 Controller 的情况下将选项卡栏菜单传播到 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43645320/

相关文章:

ios - 调用委托(delegate)方法时无法识别选择器

objective-c - 如何在 View 中保存 UIImage

ios:在后台排队阻塞并在网络可用时执行

ios - UITextField 未在函数中注册任何文本长度

swift - 如何快速从 Storyboard导航到 xib 文件?

ios - 为什么无法在 UIWebView iOS7.1 应用程序中打开 itms-services 协议(protocol)?

ios - UIImagePickerController() 在 UIImage View 中显示图像很好,但在集合和表的 UIImage View 中旋转?

Swift - Pod 图片未加载(未找到,返回 nil)

ios - UIScrollView/UIImageView 多页 PDF 可能吗?

ios - 从其他方法中删除 subview