【问题标题】:How can I segue or pop back to the second scene of the first tab in a tabbed app, from a scene on another tab?如何从另一个选项卡上的场景切换或弹出选项卡式应用程序中第一个选项卡的第二个场景?
【发布时间】:2015-04-05 20:52:03
【问题描述】:

我有一个带有标签栏控制器和三个标签的故事板。每个选项卡都有一个导航控制器。第一个标签有三个场景。在第三个选项卡上的视图中有一个按钮(注销),我想将它转到第一个选项卡上的第二个场景(对应于登录视图控制器并通过 Show 连接到第一个场景(例如,推送) .

这是我尝试过的:

self.tabBarController?.selectedIndex = 0

这很有效,只要我在点击 UIButton 后返回到第一个选项卡的初始场景。但由于我想进入第二个场景,这不是一个完整的解决方案。我认为解决方案可能是这样的:

self.tabBarController?.selectedViewController = LoginViewController()

self.tabBarController?.setViewControllers(self.LoginViewController, animated: true)

但我不想创建视图控制器的另一个实例。

我仍然可以使用 .selectedIndex 来实施解决方案吗?

【问题讨论】:

    标签: ios swift uitabbarcontroller segue


    【解决方案1】:

    您可以尝试的简单解决方案是 1. 将全局变量(即在 App Delegate 中)名称设置为布尔类型的 isLogoutClick。 2. 当您在第三个选项卡上并单击注销按钮时,然后将全局变量“isLogoutClick”设置为 true。 3.然后导航到第一个选项卡(第一个场景)并在 viewDidLoad 上检查条件 如果(appDelegate.isLogoutClick) { 将您的视图推到下一个场景。 } 4.将isLogoutClick的值设为false。 5. 确保最初isLogoutClick 的值为false。

    试试这个可能对你有帮助。

    【讨论】:

      【解决方案2】:

      selectedIndex 设置为0 后,执行所需的转场(在本例中为"loginSegue")。如果您还没有命名,您可以在故事板中命名您的 segue。

      tabBarController?.selectedIndex = 0
      
      if let someViewController = tabBarController?.viewControllers?[0] as? SomeViewController {
          someViewController.performSegueWithIdentifier("loginSegue", sender: nil)
      }
      

      【讨论】:

        【解决方案3】:

        我不确定这是否适用于 tabBarController,因为我已将它用于我的 navigationController 但应该可以正常工作。

        if let tab = self.tabBarController?.viewControllers {
            if let index = find(tab.map { $0 is LoginViewController }, true) {
                let destination = tab[index] as LoginViewController
                tabBarController?.presentViewController(destination, animated: true, completion: nil)
            }
        }
        

        使用 navigationController 我会使用 popToViewController 但我不确定 tabBarController 究竟是如何工作的

        【讨论】:

          猜你喜欢
          • 2011-11-21
          • 1970-01-01
          • 2012-09-15
          • 2018-07-03
          • 2021-08-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-13
          相关资源
          最近更新 更多