![](/img/trans.png)
[英]SWRevealViewController won't work after I go to the child of view controller and go back to the previous view controller
[英]Go back to previous view controller doesn't work
我的第一个视图控制器有一个按钮,该按钮触发@IBAction goTo2ndVc()
,后者提供了第二个ViewController:
class FirstVC: UIViewController {
...
@IBAction func goTo2ndVc() {
let secondVc = SecondVC(label: "I am second vc.")
self.presentViewController(secondVc, animated: true, completion: nil)
}
当按下按钮时,第二视图控制器将显示在屏幕上。 没问题。
在第二视图控制器中,还有一个按钮可用于返回到第一视图控制器:
class SecondVC: UIViewController {
...
@IBAction func backToFirst(sender: AnyObject) {
print("go back ...")
self.navigationController?.popViewControllerAnimated(true)
}
}
我在互联网上看过,人们建议使用navigationController?.popViewControllerAnimated(true)
返回到以前的控制器。 但是,当我按下“返回”按钮时,我可以看到打印消息“返回...”,但该应用程序没有返回到第一视图控制器。 为什么?
@IBAction func backToFirst(sender: AnyObject) {
print("go back ...")
self.dismissViewControllerAnimated(true, completion: nil)
}
在Swift 3中
self.dismiss(animated: true, completion: nil)
您不应该使用导航控制器,因为添加第二个视图控制器时没有使用它。 这就是为什么只需调用dismissViewControllerAnimated
方法。
仅当通过pushViewController
方法添加视图控制器时,才必须使用UINavigationController
及其pop
方法。
在这里熟悉导航控制器的概念: https : //developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/NavigationControllers.html
那里
问题很简单..
self.presentViewController(secondVc, animated: true, completion: nil)
该代码将显示第二个视图,您没有按下它。
self.navigationController?.popViewControllerAnimated(true)
popViewController将从弹出的位置弹出回到先前的视图控制器。 因此,有两种方法可以实现您想要的
1)如果要显示viewController,则必须关闭视图控制器以显示以前的视图控制器
self.dismissViewControllerAnimated(true, completion: nil)
2)如果要使用PopToVewcontroller,则必须推送第二个视图控制器,而不是使用
self.navigatioVonroller?.pushViewController(secondVc, animated: true)
如果要返回到以前的视图控制器,只需添加:
[self dismissViewControllerAnimated:YES completion:nil];
按钮操作方法。
如果将其添加到每个屏幕上显示的导航视图控制器上,我认为没有理由不起作用,因为它将始终关闭最近显示的视图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.