Как показать ViewController в вашем приложении iOS, используя только код? - PullRequest
0 голосов
/ 06 апреля 2020

Я хочу показать ViewController в своем приложении без использования точки входа раскадровки.

Я убедился, что точка входа раскадровки по умолчанию удалена и что идентификатор и имя раскадровки верны. Все, что я получаю, это просто черный экран при запуске приложения на симуляторе.

Вот мой файл 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.
    }


}

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Если вы используете Viewcontrollers и xcode 11.3.1 или новее, выполните следующие действия после создания нового проекта.

  1. Удалите манифест сцены приложения из info.plist info.plist
  2. Удалить SceneDelegate.swift file

  3. Удалить методы Swift UI из файла AppDelegate.

  4. Удалить ContentView.swift файл

  5. Создать новый файл ViewController Файл> Создать> Какао Touch Class create new view controller

  6. установить наш MainViewController в файл AppDelegate.

Добавить это

window = UIWindow(frame: UIScreen.main.bounds)
   window!.rootViewController = MainViewController()
   window!.makeKeyAndVisible()
   window?.rootViewController = UINavigationController(rootViewController: MainViewController())
0 голосов
/ 06 апреля 2020

С 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()
    }
...