#ios #swift #xcode #version
Вопрос:
Я не могу программно создать приложение для более старых версий iOS в Xcode 12. В AppDelegate есть мой код.swift
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Set the window bounds
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
window?.rootViewController = UINavigationController(rootViewController: ViewController())
return true
}
}
Вот мой контроллер просмотра:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
view.backgroundColor = .white
}
}
Я искал решение в Интернете, но не смог его найти.
Я удалил файлы Main.storyboard и SceneDelegate.swift. Я удаляю ключ/значение main в файле info.plist. И я удаляю Main.раскадровку в Основной интерфейс
Комментарии:
1. в чем проблема ?
Ответ №1:
не удаляйте файл sceneDelegate, это плохая практика, AppDelegate скоро устареет… если вам нужна настройка для устройств, используйте iOS 12 или более старые версии.. попробуйте использовать это..
в sceneDelegate…
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let scene = (scene as? UIWindowScene) else { return }
let floatVersion = (UIDevice.current.systemVersion as NSString).floatValue
if floatVersion >= 13 {
window = UIWindow(windowScene: scene)
window?.makeKeyAndVisible()
let controller = YourController()
let navigation = UINavigationController(rootViewController: controller)
window?.rootViewController = navigation
}
}
и используйте это в AppDelegate.. только для устройств, использующих iOS 12 или старше внутри файла AppDelegate
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let floatVersion = (UIDevice.current.systemVersion as NSString).floatValue
if floatVersion <= 12.5 {
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
// if you use a navigation...
let controller = YourController()
let navigation = UINavigationController(rootViewController: controller)
window?.rootViewController = navigation
}
return true
}
попробуйте использовать точки останова в делегировании сцены и AppDelegate внутри проверок, используя симулятор с версиями iOS 12 и iOS 13 или более поздними версиями… и это сработает, но не удаляйте sceneDelegate, ознакомьтесь с новостями wwdc swift.
У меня была такая же проблема 2 года назад, и я использую эту опцию в настоящее время и все еще работаю на себя, надеюсь, это поможет.
Комментарии:
1. Спасибо за ваш ответ, но проблема решена другим способом.