Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 是否可以从一个选项卡栏控制器导航到另一个选项卡栏控制器?_Ios_Swift_Storyboard_Tabbar - Fatal编程技术网

Ios 是否可以从一个选项卡栏控制器导航到另一个选项卡栏控制器?

Ios 是否可以从一个选项卡栏控制器导航到另一个选项卡栏控制器?,ios,swift,storyboard,tabbar,Ios,Swift,Storyboard,Tabbar,我有一个应用程序,它有三个选项卡作为根导航,第一个选项卡中有一个表视图。因此,当用户单击表格单元格时,用户应该导航到另一个包含两个选项卡的视图。我如何做到这一点 当前情节提要 这就是我目前所拥有的。我仍在学习ios开发,我想知道这是否可行是的,您可以通过此条件在单个选项卡控制器中设置任何检查,该条件是您希望从其选项卡中显示重置的选项卡。在表视图中单击行时,您可以使用如下代码: override func tableView(_ tableView: UITableView, didSelect

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

当前情节提要


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

是的,您可以通过此条件在单个选项卡控制器中设置任何检查,该条件是您希望从其选项卡中显示重置的选项卡。

在表视图中单击行时,您可以使用如下代码:

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)
        }

    }

从表视图中删除序列图像板序列到第二个选项卡栏控制器。并显示表视图控制器的
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: { $0.topViewController is FourthVC })?.topViewController as? FourthVC {
                fourthVC.name = "name"
            }
            if let fifthVCvc = navControllers.first(where: { $0.topViewController is FifthVC })?.topViewController as? FifthVC {
                fifthVCvc.id = 20
            }
        }
        self.present(secondTabBarController, animated: true, completion: nil)
    }
}
用正确的类名和标识符替换类名和情节提要标识符

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)
    }
}

您可以这样做。我如何将数据传递到第二个选项卡控制器?顺便问一下,我如何获得导航栏中的“后退”按钮?因此,如果我使用nav.pushViewController()而不是present(),我想我可以正确地获得相同的行为,并将第二个选项卡控制器连接到第一个选项卡控制器navigation@SenuraSeneviratne是的,你可以用。在使用nav.pushViewController()之前,隐藏第一个选项卡控制器的导航栏,否则第二个选项卡控制器的导航栏将不可见