【问题标题】:How to show a ViewController in your iOS app by only using Code?如何仅使用代码在您的 iOS 应用程序中显示 ViewController?
【发布时间】:2020-04-06 10:42:23
【问题描述】:

我想在我的应用程序中显示一个 ViewController 而不使用情节提要入口点。

我确保删除了默认情节提要入口点并且情节提要 ID 和名称正确。在模拟器上运行应用程序时,我得到的仍然只是黑屏。

这是我的 AppDelegate.swift 文件。

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.


        window = UIWindow(frame: UIScreen.main.bounds)

        let sb = UIStoryboard(name: "Main", bundle: nil)
        let initialViewController = sb.instantiateViewController(withIdentifier: "VC")


        window?.rootViewController = initialViewController
        window?.makeKeyAndVisible()




        return true
    }

    // MARK: UISceneSession Lifecycle

    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
        // Called when a new scene session is being created.
        // Use this method to select a configuration to create the new scene with.
        return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
    }

    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
        // Called when the user discards a scene session.
        // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
        // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
    }


}

感谢任何帮助。

【问题讨论】:

    标签: ios swift xcode uiviewcontroller ios-simulator


    【解决方案1】:

    SceneDelegate 与应用程序委托有点不同。您使用UIWindowScene 来构造您的UIWindow

        let sb = UIStoryboard(name: "Main", bundle: nil)
        let initialViewController = sb.instantiateViewController(withIdentifier: "VC")
    
        if let windowScene = scene as? UIWindowScene {
            let window = UIWindow(windowScene: windowScene)
            window.rootViewController = initialViewController
            self.window = window
            window.makeKeyAndVisible()
        }
    

    【讨论】:

      【解决方案2】:

      如果您使用 Viewcontrollers 和 xcode 11.3.1 或更高版本,请在创建新项目后按照以下步骤操作。

      1. 从 info.plist 中删除应用程序场景清单
      2. 删除 SceneDelegate.swift 文件

      3. 从 AppDelegate 文件中移除 Swift UI 相关的方法。

      4. 删除 ContentView.swift 文件

      5. 创建新的 ViewController 文件 文件>新建>Cocoa Touch 类

      6. 在 AppDelegate 文件中设置我们的 MainViewController。

      添加这个

      window = UIWindow(frame: UIScreen.main.bounds)
         window!.rootViewController = MainViewController()
         window!.makeKeyAndVisible()
         window?.rootViewController = UINavigationController(rootViewController: MainViewController())
      

      【讨论】:

        猜你喜欢
        • 2012-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-08
        相关资源
        最近更新 更多