我具有以下ViewController结构,请参见下图。

每当我想从ViewController 1转移到任何其他主控制器时,我都使用self.tabBarController?.selectedIndex = indexNumber

// for instance, this would take me to ViewController 3
self.tabBarController?.selectedIndex = 2

根据下面的图片,当在ViewController 1中点击一个按钮时,如何以编程方式从ViewController 1转到TargetViewController

供参考-
在下面的图片中,我在ViewController 3中显示一个按钮,这只是为了演示情节提要的结构,实际的按钮点击将在ViewController 1中发生

ios - 在Swift中以编程方式从主TabBarController转到嵌套的ViewController-LMLPHP

编辑:

这是根据Prashant Tukadiya的答案进行的操作。

ViewController 1

ViewController 1中,在您的tap事件中添加以下内容。
    self.tabBarController?.selectedIndex = 2
    let nav = (self.tabBarController?.viewControllers?[2] as? UINavigationController)
    let vc =  TargetViewController.viewController()
    nav?.pushViewController(vc, animated: true)

TargetViewController
  • 在您的TargetViewController中添加以下类方法。

    class func viewController()-> TargetViewController {
    让Storyboard = UIStoryboard(名称:“Main”,包:nil)
    返回storyboard.instantiateViewController(withIdentifier:“targetViewControllerID”)为! TargetViewController
  • 在情节提要ID字段中添加targetViewControllerID
  • 最佳答案

    您可以直接从情节提要中将标识符提供给TargetViewController并从情节提要中加载然后推送或展示它。

    就像在TargetViewController中添加此方法

    class func viewController () ->  TargetViewController {
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        return storyboard.instantiateViewController(withIdentifier: "yourIdentifer") as! TargetViewController
    }
    

    和点击事件
         let vc =  TargetViewController.viewController()
    
        self.navigationController?.pushViewController(vc, animated: true)
    

    编辑

    阅读评论后,对您的要求有了清晰的认识

    在从ViewController1进行按钮操作时,您想转到TargetViewController,但是在按回时,您想返回到viewController 3

    首先选择特定的索引
       self.tabBarController?.selectedIndex = 2
    

    之后,您需要获取UINavigationController
    let nav = (self.tabBarController?.viewControllers?[2] as? UINavigationController)
    

    然后推ViewController
        let vc =  TargetViewController.viewController()
    
        nav?.pushViewController(vc, animated: true)
    

    注意:不要忘记向情节提要添加标识符到TargetViewController,也要添加class func viewController () -> TargetViewController方法到TargetViewController

    希望对您有所帮助

    关于ios - 在Swift中以编程方式从主TabBarController转到嵌套的ViewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53633230/

    10-08 21:05