在屏幕之间导航

时间:2017-11-17 19:49:26

标签: ios swift uinavigationcontroller uitabbarcontroller

在我的应用程序中,我有复杂的导航。

我有购物详情。它是标签栏控制器的视图控制器。

当我从购物详细信息视图控制器中选择任何商店名称时,它将弹出到嵌入导航控制器中的购物清单查看控制器

购物清单 查看控制器中选择编辑按钮时。它将弹出到另一个视图控制器ADD屏幕。它也嵌入了导航控制器

当我从添加屏幕点击保存时。它将转到购物清单查看控制器

当我点击购物清单查看控制器中的完成按钮时。我必须导航到标签栏控制器的购物详细信息视图控制器。

请提供输入。如何遍历标签栏控制器?

我试过下面的代码。它将导航到StoreDetails View Controller。不显示Tab Bar Items

let storeDetails = self.storyboard?.instantiateViewController(withIdentifier: "StoreDetailsController") as! StoreDetailsController
        storeDetails.managedContext = managedContext
        storeDetails.coreData = coreData
        storeDetails.back = true
self.navigationController?.pushViewController(storeDetails, animated: false)

3 个答案:

答案 0 :(得分:0)

如果你做self.navigationController?.dismiss(animated: true),你应该回到导航控制器中嵌入第一个导航控制器之前的viewController,我认为是Shipping Details(你选择任何商店名称的那个) “)。

答案 1 :(得分:0)

从我可以告诉你的尝试将你发起的控制器推送到堆栈而不是弹回它。从你的帖子中获取整个图片有点令人困惑,你能分享故事板的那部分作为截图吗?如果您不熟悉共享故事板,您是否至少可以提供一个图表?感谢。

编辑:

为了弹回你的控制器你可以使用这样的东西:

for controller in (self.navigationController?.viewControllers)! {

  if let vc = controller as? StoreDetailsController {

    self.navigationController?.popToViewController(vc, animated: true)
  }
}

但我真的不能告诉你,你是否至少不能分享你的控制器如何安排以及它们嵌入的位置图。

答案 2 :(得分:0)

因为它是互联的。 pushToViewController或popTOViewController或dismiss不起作用。所以我使用了放松。

StoreDetailsController: 我在StoreDetailsController中有以下代码

@IBAction func unwindToVC1(segue:UIStoryboardSegue) {
        print("Test")
    }

在我的ShoppingListViewController中,我已退出Done bar按钮退出。

 @IBAction func done(_ sender: UIBarButtonItem) {
performSegue(withIdentifier: "unwindSegueToVC1", sender: self)
       }

您可以按照以下链接进行展开

https://medium.com/@mimicatcodes/create-unwind-segues-in-swift-3-8793f7d23c6f