ios - 推送到另一个选项卡的 View Controller

标签 ios swift uinavigationcontroller uitabbarcontroller

当用户单击某个单元格上的按钮时( View ) 我想推送到另一个选项卡的 View Controller

tabbarController
--- nav controller ---- VC A
--- nav controller ---- VC B
--- nav controller ---- VC C ---- VC D

就像从 View Controller A 到 View Controller D

我尝试过继续

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

可以工作,但没有导航栏....

我尝试创建一个导航 Controller 并呈现,崩溃了......

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)
        }

请帮助我

编辑---

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

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

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)
                }
            }
        }
    }

最佳答案

使用下面的代码,您可以从 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

关于ios - 推送到另一个选项卡的 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43540728/

相关文章:

ios - viewDidLoad 中的代码在每次调用时运行

ios - ReactiveX,关于移动应用架构和层

ios - 如何像 Lyft App 一样在 iOS 8 上的 MKMapView 平移手势上隐藏 UINavigationItem?

swift - 用户调整 AVPlayerView 大小时强制宽高比 - Swift OS X Cocoa

swift - 从导航数组中删除以前的 Controller

ios - 使用自定义 segue 在导航堆栈上向后移动

ios - XCode - GitHub 'SecureTransport 错误 : I/O error. (-1)'

ios - PrepareForSegue with UITableViewController - 传递数据

ios - 在 iOS 11 中分享到 Twitter,无需侵入性请求

ios - 我如何准备 segue 在我的 TableViewController 中加载不同的数组?