ios swift-从多个选项卡实例化相同的VC
我有多个选项卡通过单独的导航控制器连接。我想实例化相同的端点Pt VC,不管用户选择哪个选项卡1到4 当我选择Tab 1时,它显示End Pt VC,因为它是通过Segue连接的。但是,当我选择其他选项卡时,我会手动尝试按下EndPt VC,如选项卡控制器方法中所示。但它显示的是空白屏幕。如何在不考虑选项卡选择的情况下显示相同的结束Pt VCios swift-从多个选项卡实例化相同的VC,ios,swift,uiviewcontroller,Ios,Swift,Uiviewcontroller,我有多个选项卡通过单独的导航控制器连接。我想实例化相同的端点Pt VC,不管用户选择哪个选项卡1到4 当我选择Tab 1时,它显示End Pt VC,因为它是通过Segue连接的。但是,当我选择其他选项卡时,我会手动尝试按下EndPt VC,如选项卡控制器方法中所示。但它显示的是空白屏幕。如何在不考虑选项卡选择的情况下显示相同的结束Pt VC override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
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)
}
}
}
尝试从故事板实例化viewcontroller,然后演示它。另外,确保在标识部分为目标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)
您可以通过其委托检测
uitabarcontroller
何时更改选项卡uitabarcontrollerdelegate
。在下面的委托方法中,您可以将选定的视图控制器强制转换为UINavigationController
(这是我可以在您附加的屏幕截图中看到的)
现在,无论您选择哪个选项卡,都会创建一个新的
MyViewController
实例。即使多次点击同一个选项卡,也会为新的MyViewController
实例替换当前实例。我理解第一个参数storyboadName:String指的是EndPt VC storyboard ID。您所指的第二个参数VC:UIViewController是哪个?我不明白它是从哪里来的?EndPt也是一个UITableViewController。抱歉,我提到它是因为ViewControllerI将您提供的扩展方法添加到了我的TabBarController类中,当我选择Tabs 2、3、4时,它会显示黑屏。选项卡1工作,因为终端Pt VC通过导航控制器连接到选项卡1。我在扩展方法中加入了调试。看起来从未调用过扩展名。如何确保调用它?我的错误是,我忘记将委托分配给tabbar控制器作为self.delegate=self。。现在可以了。谢谢
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)
}
}