vij*_*iju 9 uiviewcontroller ios swift dismissviewcontroller
如何在Swift iOS中关闭2个视图控制器?
以下是我的代码.
@IBAction func backButtonTapped(sender: AnyObject) {
self.presentingViewController
.presentingViewController
.dismissViewControllerAnimated(true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
Mix*_*xaz 11
为此目的有特殊的展开segue,它旨在回滚到堆栈中的某个视图控制器.
让我们将最顶层的控制器(你来自哪里)作为源和堆栈中的控制器(你想回滚到顶部)作为目的地.
IBAction在目标中创建以在展开时触发:
@IBAction func myUnwindAction(segue: UIStoryboardSegue) {}
它可以是空的.
在源控制器中通过从控制器图标拖动到退出一个来创建展开segue,它将找到您在步骤1中创建的操作.调用segue unwind.
现在你可以用常规的代码发出segue
performSegueWithIdentifier("unwind", sender: nil)
我描述了如何从代码中发出unwind segue.对于按钮展开,可以通过拖动按钮直接在IB中创建segue以退出图标.
另请查看此讨论以获取更多信息:如何以编程方式执行Unwind segue?
Gan*_*ddy 11
Swift 3+版本.您可以使用以下代码在Swift 3中一次关闭两个视图控制器.
func dismissTwoViews() {
self.presentingViewController?
.presentingViewController?.dismiss(animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
您一次只能关闭一个视图控制器。尝试这个
@IBAction func backButtonTapped(sender: AnyObject) {
self.presentingViewController?.dismissViewControllerAnimated(true, completion: {
let secondPresentingVC = self.presentingViewController?.presentingViewController;
secondPresentingVC?.dismissViewControllerAnimated(true, completion: {});
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16125 次 |
| 最近记录: |