我具有以下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
中发生编辑:
这是根据
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
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/