ios - 通过 App Delegate 从 UINavigationController 呈现 UIViewController

标签 ios swift

我正在快速构建一个 iOS 应用程序,在启动该应用程序时,我想首先显示 viewController2,它显示在 viewController1 之上,而 viewController1 嵌入在 UINavigationController 中。关键部分是 ViewController2 不是导航堆栈的一部分,而是呈现而不是被推送。

这是我目前的尝试,但没有成功,只在启动时显示 ViewController1。

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let viewController1 = mainStoryboard.instantiateViewController(withIdentifier: "VC1") as! ViewController1
        let viewController2 = mainStoryboard.instantiateViewController(withIdentifier: "VC2") as! ViewController2
        let navController = UINavigationController(rootViewController: viewController1)
        viewController1.present(viewController2, animated: false)

        self.window?.rootViewController = navController
        self.window?.makeKeyAndVisible()

        return true
    }

我之所以采用这种结构,是因为我使用户能够以与 Snapchat 类似的方式从左向右和从右向左滑动以访问 viewController2 和 viewController3。展示这些 Controller 似乎是最好的主意,因为它们没有导航栏,完成后你会想返回到 viewControlller1 - 也许我需要更改我的应用程序的结构,但理想情况下我不想这样做,因为我打算在其中提交这个 mvp下周。

非常感谢 iOS 和 swift 向导的帮助。

//认为我需要更改应用程序的结构以在导航堆栈中包含 viewController2 :( 因为使用已接受的答案会导致在显示 viewController2 之前短暂地看到 viewController1,这是合乎逻辑的 - 从长远来看,这会更好尽管有短期的痛苦

最佳答案

rootViewController 应该在一切之前设置。按照这个顺序做,它应该可以正常工作。

self.window?.rootViewController = navController        
self.window?.makeKeyAndVisible()

navController.present(viewController2, animated: false)

关于ios - 通过 App Delegate 从 UINavigationController 呈现 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41399323/

相关文章:

ios - 使用 skphysicsBody 和半径的圆圈将球困在圆圈中

ios - 如何在 iOS Safari 中打开捆绑文件?

ios - UILabel 中的 Youtube/Instagram 评论风格

swift - String 子字符串如何在 Swift 中工作

ios - Swift 协议(protocol)关联类型和继承约束

ios - 如何使 UICollectionView 单元格具有圆角和阴影?

ios - 透明 UIImage 在导航栏中不透明

ios - 将分割 View Controller 添加到 Xcode 5 中的单 View 项目

java - iOS 应用程序可以通过蓝牙与 Mac 上的 Java 应用程序通信,而无需创建 OS X 应用程序吗?

ios - 在 CollectionView 中的单元格之间拖放不起作用,iOS、PanGestureRecognizer 和 Swift3