在视图控制器之间来回切换 Swift

Switching Back & Forth Between View Controllers Swift

我不知道为什么,但我在想办法返回主视图时遇到了很多麻烦。我使用下面的代码切换到新视图,但我该如何返回?

@IBAction func printPage(sender: AnyObject) {
        var vc = self.storyboard?.instantiateViewControllerWithIdentifier("labelView") as PrintLabelView
        self.presentViewController(vc, animated: true, completion: nil)
        vc.toPass = skuLabel.text
    }

我之前遇到过类似的问题,我发现很难返回,我没有的第一件事是导航控制器,需要下面的代码

func goToMainVC() {
    if let navController = self.navigationController {
        navController.popToRootViewControllerAnimated(true)
    }
}

请查看我遇到类似问题时发布的答案here

希望这会有所帮助

当您呈现 UIViewController 时,您应该在呈现的 UIViewController 中有一些后退按钮,通过单击它用户可以返回。

在该按钮的 IBAction 中,您可以使用以下代码:

@IBAction func goBack() {
    dismissViewControllerAnimated(true, completion:nil)
}

如果您使用导航视图控制器,默认情况下它会提供该功能。

使用放松。

在 MainViewController 中

@IBAction unwindSegue(segue: UIStoryboardSegue, sender: UIStoryboardSegue){//any code you want executed upon return to mainVC
}

在新视图控制器中

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){//pass any information from New to Main here
}

然后,在 NewVC 中,只需控制并从您想要展开的任何 UIButton 拖动到 NewVC 的 Exit 符号和 select unwindSegue

*

*

注意:另外,如果您希望以编程方式而不是从按钮进行展开。 Control+从 NewVC 黄色拖动到退出,这将在 "Exit" Select 这个 "Unwind segue" 下创建一个 unwind segue,并在属性检查器中给它一个标识符。

现在在 NewVC 中创建一个函数

func NameYourFunc(){performSegueWithIdentifier("TheIdentiferYouUsed", sender: self)}

当您想执行此展开时,在您的 NewVC 代码中的任何地方只需调用 NameYourFunc()