【问题标题】:push to another tab's viewcontroller推送到另一个选项卡的视图控制器
【发布时间】:2017-04-21 10:47:22
【问题描述】:

当用户单击某个单元格上的按钮时(视图) 我想推到另一个标签的视图控制器

标签栏控制器
--- 导航控制器 ---- VC A
--- 导航控制器 ---- VC B
--- 导航控制器 ---- VC C ---- VC D

like 从 viewcontroller A 到 viewcontroller D

我试过转场

self.window?.visibleViewController?.performSegue(withIdentifier:"homeSegueDetailStatement", sender: self)

工作但没有导航栏....

我尝试创建一个导航控制器并显示,崩溃了...

if let visibleViewCtrl = UIApplication.shared.keyWindow?.visibleViewController {

            let nav = UINavigationController(rootViewController: visibleViewCtrl)
            let b = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "PendingStatementVC") as! PendingStatementViewController
        nav.pushViewController(b, animated:false)
            visibleViewCtrl.present(nav, animated:true, completion:nil)
        }

请帮帮我

编辑---

实际上我想将选项卡和导航更改为第二个视图控制器。 我从 collectionCell 调用这个函数,这就是为什么我必须获取当前视图控制器

编辑--- 我找到了我想要的

DispatchQueue.global().async {
        DispatchQueue.main.async {
            self.tabBarController?.selectedIndex = 2
                if let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "DetailStatementVC") as? DetailStatementViewController {

                if let navigator = self.tabBarController?.viewControllers?[2] as? UINavigationController {
                    navigator.pushViewController(controller, animated: true)
                }
            }
        }
    }

【问题讨论】:

  • 如果你推视图控制器,那你为什么要再次展示视图控制器
  • 你需要从 appdelegate 或 Viewcontroller 推送?
  • 你能展示你的故事板场景吗

标签: ios swift uinavigationcontroller uitabbarcontroller


【解决方案1】:

使用下面的代码,您可以从 VC-A 转到 VC-D,然后您可以从 VC-D 回到 VC-C

let dViewController = self.storyboard?.instantiateViewController(withIdentifier: "DViewController") as! DViewController
let thirdTabNavController = self.tabBarController?.viewControllers?[2] as! UINavigationController
thirdTabNavController.pushViewController(dViewController, animated: false)
self.tabBarController?.selectedIndex = 2

【讨论】:

    【解决方案2】:

    试试这样的:

    let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
    let nextViewController = storyBoard.instantiateViewController(withIdentifier: "mainView") as! MainViewController
    self.present(nextViewController, animated:true, completion:nil)
    

    【讨论】:

      【解决方案3】:

      这样试试

      let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
      let MainViewControllerObj : MainViewController = mainStoryboardIpad.instantiateViewController(withIdentifier: "MainViewController") as! MainViewController
      let navigationControllerObj:UINavigationController = UINavigationController.init(rootViewController: MainViewControllerObj)
      self.present(navigationControllerObj, animated:true, completion:nil)
      

      【讨论】:

        【解决方案4】:

        Kamil3 的答案肯定是最好的,但是如果有人需要在导航栏中的“返回”按钮旁边隐藏标题,我发现不是很优雅的解决方案,但想分享一下,因为它花了我很多时间:

        guard let dViewController = 
            self.storyboard?.instantiateViewController(withIdentifier: "DViewController") as! DViewController,
            let thirdTabNavController = self.tabBarController?.viewControllers?[2] as! UINavigationController else {
          return
        }
        self.tabBarController?.selectedIndex = 2
        // here what you need
        thirdTabNavController.viewControllers.first?.title = " "
        thirdTabNavController.pushViewController(dViewController, animated: false)
        

        【讨论】:

          【解决方案5】:
          Try below code:
          
          let mainStoryBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
          let nextViewController = mainStoryBoard.instantiateViewController(withIdentifier: "DcontrollerIdentifier") as! DViewController
           self.navigationController?.pushViewController(nextViewController, animated: true)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-03-28
            • 2018-06-30
            • 2015-06-26
            相关资源
            最近更新 更多