我需要呈现链接到UITabBarController的第二个选项卡(索引:1)的VC。不使用故事板segues。
有了segues,它正在发挥作用。代码:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let tabVC = segue.destination as? UITabBarController
tabVC.selectedIndex = 1
}
不使用segues我的代码看起来像(见下文)。在显示tabVC时,虽然我将selectedIndex设置为1(第二个选项卡),但会显示第一个(索引:0)选项卡。有什么建议可以解决这个问题?感谢
func presentTab1(_ sender: Any) {
let tabVC = MainTabBar()
tabVC.selectedIndex = 1
present(tabVC, animated: true, completion: nil)
}
答案 0 :(得分:3)
要做的有两种方法,你可以使用其中任何一种
1。)如果你有 NavigationController ,那么在你的函数中尝试以下代码行。
func presentTab1(_ sender: Any) {
let targetVC = self.storyboard?.instantiateViewController(withIdentifier: "NavigateionControllerIdentifier") as! UINavigationController
self.present(targetVC, animated: true)
}
2。)或者,如果您想直接导航到 ViewConteroller ,那么
func presentTab1(_ sender: Any) {
let targetVC = (self.storyboard?.instantiateViewController(withIdentifier: "viewControllerIdentifier"))!
self.present(targetVC, animated: true)
}
答案 1 :(得分:1)
我有同样的问题,你可以这样做:
func presentTab1(_ sender: Any) {
self.tabBarController?.selectedIndex = 1
_ = self.navigationController?.popToRootViewController(animated: true)
}
为我工作greta! 您只需要知道要访问哪个索引。
答案 2 :(得分:0)
我建议将选定的索引传递给构造函数并在ViewDidLoad中设置SelectedIndex。
答案 3 :(得分:0)
第1步:
为您要转到的View控制器命名。 选择该视图控制器,然后从此处给出该VC的标识
第2步:
使用以下代码导航到该VC:
let targetVC =
(self.storyboard?.instantiateViewController(withIdentifier: "someVC"))!
self.present(targetVC, animated: true)
如果你有导航控制器那么。
let targetVC =
self.storyboard?.instantiateViewController(withIdentifier: "NavigationControllerId") as! UINavigationController
self.present(targetVC, animated: true)