ios swift-从多个选项卡实例化相同的VC

ios 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) {

我有多个选项卡通过单独的导航控制器连接。我想实例化相同的端点Pt VC,不管用户选择哪个选项卡1到4

当我选择Tab 1时,它显示End Pt VC,因为它是通过Segue连接的。但是,当我选择其他选项卡时,我会手动尝试按下EndPt VC,如选项卡控制器方法中所示。但它显示的是空白屏幕。如何在不考虑选项卡选择的情况下显示相同的结束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)
        }
    }


}

尝试从故事板实例化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)
    }
}