我有多个标签通过单独的导航控制器连接。我想实例化相同的End Pt VC,无论哪个标签用户选择标签1到4.
当我选择Tab 1时,它显示End Pt VC,因为它是通过Segue连接的。但是当我选择其他选项卡时,我手动尝试按下选项卡控制器方法中显示的EndPt VC。但它显示空白屏幕。无论选项卡选择如何,我如何呈现相同的End Pt VC?
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
if let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "EndPointTVC") as? EndPtListTableViewController{
viewController.selectedTab = self.selectedTab
if let navigator = self.navigationController {
navigator.pushViewController(viewController, animated: true)
}
}
}
答案 0 :(得分:1)
尝试从故事板中实例化viewcontroller,然后呈现它。此外,请确保您已为目标视图控制器提供故事板ID" EndPointTVC"在识别部分。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier : "EndPointTVC")
viewController.selectedTab = self.selectedTab
self.present(viewController, animated: true)
答案 1 :(得分:0)
您可以通过其委托UITabBarController
检测UITabBarControllerDelegate
更改标签的时间。在下面的委托方法中,您可以将选定的视图控制器强制转换为UINavigationController
(这是我在您附加的屏幕截图中可以看到的)。
extension MyTabBarController: UITabBarControllerDelegate {
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
let myVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "MyViewControllerStoryID") as! MyViewController
let navController = viewController as! UINavigationController
navController.viewControllers = [myVC]
print(viewController)
}
}
现在,无论您选择哪个选项卡,都会创建一个新的MyViewController
实例。即使多次点击同一个选项卡,也会替换新MyViewController
实例的当前实例。