是否可以从一个标签栏控制器导航到另一个标签栏控制器?

Is it possible to navigate from a tab bar controller to another tab bar controller?

我有一个包含三个选项卡作为根导航的应用程序,第一个选项卡中有一个 table 视图。因此,当用户单击 table 单元格时,用户应导航到另一个包含两个选项卡的视图。我该如何实现?

当前故事板

这就是我目前所拥有的。我仍在学习 ios 开发,我想知道这是否可行

是的,您根据此条件在单个选项卡控制器中设置了任何检查,您希望显示哪个选项卡从他们的重置。

当点击 table 视图中的行时,您可以使用如下代码:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        // Segue to the other UITabBarController, pass selected information

        let selectedCell = tableView.cellForRow(at: indexPath.row)

        if let viewController = self.storyboard?.instantiateViewController(withIdentifier: "YourTabBarControllerIdentifier") as? YourTabBarController {
            viewController.selectedIndex = 2 // or the index you want by default
            viewController.modalTransitionStyle = .crossDissolve // or transition you want

            self.present(viewController, animated: true, completion: nil)
        }

    }

从 table 视图中移除故事板 segue 到第二个标签栏控制器。并显示来自 table 视图控制器的 didSelectRowAt 方法的第二个标签栏控制器。您可以像这样将数据传递给嵌入式视图控制器

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if let secondTabBarController = self.storyboard?.instantiateViewController(withIdentifier: "SecondTabBarController") as?  SecondTabBarController {
        if let navControllers = secondTabBarController.viewControllers as? [UINavigationController] {
            if let fourthVC = navControllers.first(where: { [=10=].topViewController is FourthVC })?.topViewController as? FourthVC {
                fourthVC.name = "name"
            }
            if let fifthVCvc = navControllers.first(where: { [=10=].topViewController is FifthVC })?.topViewController as? FifthVC {
                fifthVCvc.id = 20
            }
        }
        self.present(secondTabBarController, animated: true, completion: nil)
    }
}

用正确的 class 名称和标识符替换 class 名称和故事板标识符

class FourthVC: UIViewController {
    var name: String?
    override func viewDidLoad() {
        super.viewDidLoad()
        print(name)
    }
}
class FifthVC: UIViewController {
    var id: Int?
    override func viewDidLoad() {
        super.viewDidLoad()
        print(id)
    }
}