我有一个视图控制器,该标签位于嵌套在导航控制器内部的选项卡栏中,如下图(VC的标题为“ Konfirmasi”)
这些VC位于标签栏索引= 3中。
我想以编程方式从标签栏索引= 3移至标签栏索引=0。我需要从该“ Konfirmasi” VC触发代码。
我尝试了2种方法。
第一个正在使用tabBarController?.selectedIndex = 0
,但是即使VC处于移动状态,结果也不完全是我想要的,而是选项卡中的 图标 条仍位于索引= 3上,而不位于索引= 0
第二个,我也尝试使用下面的代码
let mainStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main)
let vc: UITabBarController = mainStoryboard.instantiateViewController(withIdentifier: "HomeVC") as! UITabBarController
vc.selectedIndex = 0
self.present(vc, animated: false, completion: nil)
是的,它可以将选项卡栏中的图标移动到索引= 0,并且还显示正确的VC,但是似乎VC将再次全部实例化,因此将再次触发viewDidLoad
方法。
我想避免再次触发“ viewDidLoad”,我只希望只触发viewWillAppear,就像通常在应用运行时从index = 3切换到index = 0一样。
如何实现?
答案 0 :(得分:0)
如果从选项卡控制器中推送,则可以访问它。
在Konfirmasi控制器中添加打击功能
if let conts = self.navigationController?.viewControllers
{
let vc = conts[0]
if let tab = vc.tabBarController
{
tab.selectedIndex = 0
}
self.navigationController?.popToRootViewController(animated: true)
}
else
{
self.navigationController?.popViewController(animated: true)
}