我试图在不使用segue的情况下从VC1呈现VC2。有用。然后,我尝试使用self.navigationController?.popViewControllerAnimated(true)
来支持但它不起作用。我想知道从VC2到VC1应该使用什么代码。下面的代码在appDelegate中。
的AppDelegate
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let VC2 = storyboard.instantiateViewControllerWithIdentifier("VC2") as! VC2
let navController = UINavigationController(rootViewController: VC2)
self.topViewController()!.presentViewController(navController, animated: false, completion: nil)
func topViewController(base: UIViewController? = UIApplication.sharedApplication().keyWindow?.rootViewController) -> UIViewController? {
if let MMDrawers = base as? MMDrawerController {
for MMDrawer in MMDrawers.childViewControllers {
return topViewController(MMDrawer)
}
}
if let nav = base as? UINavigationController {
return topViewController(nav.visibleViewController)
}
if let tab = base as? UITabBarController {
if let selected = tab.selectedViewController {
return topViewController(selected)
}
}
if let presented = base?.presentedViewController {
return topViewController(presented)
}
return base
}
VC2
@IBAction func backButtonTapped(sender: AnyObject) {
print(self.navigationController?.viewControllers) // print([<MyAppName.VC2: 0x12f147200>])
self.navigationController?.popViewControllerAnimated(true)
}
答案 0 :(得分:0)
以下是导航流程:
当前屏幕 - 呈现一个新屏幕(它本身嵌入了一个带vc2的导航控制器中),因此Popviewcontroller无法工作。
如果你提出任何视图控制器,那么popviewcontroller不会工作,而是使用dismissviewcontroller来显示前一个屏幕。
使用此:
self.dismissViewControllerAnimated(true, completion: {})
解决! 谢谢。