0
私はsegueを使用せずにVC1からVC2を提示しようとしています。できます。その後、私はself.navigationController?.popViewControllerAnimated(true)
を使用しようとしましたが、動作しません。私はVC2からVC1に戻るために使用すべきコードが何であるか疑問に思います。以下のコードはappDelegateにあります。現在のビューコントローラがsegueによって表示されないときに戻る。 Swift
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)
}
print self.navigationcontroller.viewcontrollers backbuttonTappedメソッドにブレークポイントを設定し、それに応じてコードを更新してください。 –
印刷しようとしました(self.navigationController?.viewControllers)。それは[] –
Tony
を表示します。表示画面を提示していて、動作しないpopviewcontrollerを使用して戻ろうとしているため、以前の画面に戻らなくなります。dismissviewcontrollerを使用すると、前の画面に戻ります。 –