ios - 如何以正确的方式回到初始的 ViewController?

标签 ios swift viewcontroller rootview popviewcontroller

我有几个带有导航栏和标签栏的 View Controller 。然后我有一个没有导航栏和标签栏的初始 View Controller 。我想回到堆栈中没有其他 View Controller 的初始 View Controller 。这是我的做法:

// Head back to Initial View Controller.
let initialViewController = self.storyboard!.instantiateViewController(withIdentifier: "Initial")
UIApplication.shared.keyWindow?.rootViewController = initialViewController
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window?.rootViewController = initialViewController

这非常有效。但随后它不会再次从初始 View Controller 移动到另一个 View Controller 。例如:

@IBAction func loginButton(_ sender: Any) {
    print("Login Button Tapped.")

    let storyboard = UIStoryboard(name: "SignInViewController", bundle: nil)
    let signInViewController = storyboard.instantiateViewController(withIdentifier: "SignInViewController") as! SignInViewController
    self.navigationController?.show(signInViewController, sender: nil)

}

此处,打印语句运行,但 self.navigationController.show 不会。这一切是如何运作的?实现这一目标的正确方法是什么?

编辑:

enter image description here

为避免混淆,这是我的 Storyboard。最左边的 View Controller (粉红色屏幕)是我想要返回的初始 View Controller 。同一层最右边是我要返回的 View 。

最佳答案

它不会移动到另一个 View Controller ,因为您在 rootViewController 中设置了一个简单的 View Controller 。

你需要的是:

let initialViewController = self.storyboard!.instantiateViewController(withIdentifier: "Initial")
let navController = UINavigationController.init(rootViewController: initialViewController)

UIApplication.shared.keyWindow?.rootViewController?.present(navController, animated: true, completion: nil)

这将创建一个导航 View Controller ,因此当处于“初始”状态时,您应该能够执行推送、显示另一个 View Controller 的操作。

关于ios - 如何以正确的方式回到初始的 ViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45197385/

相关文章:

ios - viewDidload 和 viewDidAppear 没有被调用?

iphone - 如何使用NSRegularExpression从字符串中提取电子邮件地址

ios - iOS 10 及更高版本中的 EKEventStore requestAccessToEntityType 崩溃应用程序

ios - 如何以编程方式查找 View Controller 高度?

uiview - Swift 中的 resignFirstResponder

ios - UIImage 去我点击的地方(但我需要它所以你只能拖动它)

iOS 应用程序需要设计一种灵活而优雅的方式来向应用程序内不同位置的用户弹出惊喜礼物消息

ios - 允许 UIPopover 的特定方向

ios - 来自 Swift Range 的 NSRange?

ios - 仅限 iPad 应用肖像?