Swift:如何在使用XLPagerTabStrip中的子视图控制器后切换回第一个视图控制器

时间:2016-06-21 11:56:32

标签: ios swift uinavigationcontroller segue xlpagertabstrip

我一直在使用XLPagerTabStrip在我的视图控制器顶部有效创建一个标签栏,其中显示了多个子视图控制器(来源:https://github.com/xmartlabs/XLPagerTabStrip

让我们调用这些子视图控制器A1,B1和C1。在子视图内,控制器是表视图,一旦将segue分接到新的视图控制器(A2)。我希望能够从A2返回到显示子视图控制器的第一个视图控制器。我尝试向子视图控制器添加导航栏并使用navigationController?.popToRootViewControllerAnimated(true)方法,但是当按下包含此代码的按钮时,没有任何反应。我也尝试在母视图控制器中嵌入导航控制器,但这也不起作用(不确定这是因为子视图控制器A1,B1和C1没有连接到故事板中的母视图控制器)。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

好的,我认为有几种方法可以解决这个问题。首先,答案取决于您使用的segue类型。如果你使用现在的模态,那么你需要做的就是输入

self.dismissViewControllerAnimated(true, completion: completion)

否则请参阅以下有关返回A1ViewController的方法。

第一个选项:

您可以将母视图控制器嵌入到UINavigationController中。然后,Mother View Controller将成为UINavigationController的根视图控制器,您可以使用

navigationController?.popToRootViewControllerAnimated(true)

第二个选项:

放松segue。这些段落非常适合倒退,可以分三个步骤实现。

  1. 创建一个对象供用户选择返回(在您的情况下,这将是 那个UIButton在A2)
  2. 在要返回的控制器中创建一个展开方法。 (在您的情况下,该方法将在控制器A1中)

    @IBAction func unwindToA1ViewController(segue: UIStoryboardSegue)
    
  3. 在UIStoryboard中连接方法。转到A2场景并控制将A2ViewController拖到Exit,然后选择您在步骤2中创建的展开方法。(在A2 ViewController的最顶部)
  4. 请参阅下面的进一步说明和精彩视觉效果! https://www.raywenderlich.com/113394/storyboards-tutorial-in-ios-9-part-2

    希望这有帮助!