所以iOS 13确实给我带来了麻烦!我无法理解如何在现有应用程序中使用SceneDelegate。
当前,我正在Title="Level 1"
中使用布尔检查来确定首先显示哪个ViewController。.我需要弄清楚如何使用AppDelegate
复制此ViewController。
我主要关心的是如何确保我的应用程序既可以在iOS 13之前也可以在任何iOS版本上运行?如果我添加了SceneDelegate,它是否会使我的应用程序在iOS 13之前的版本上崩溃?
这是我当前设置rootVC的方法
SceneDelegate
上面的代码包含在我的if (loggedIn == nil){
Utilities.setLoginAsInitialViewContoller(window: window)
}
else
{
if(termsAgree == nil){
Utilities.setTermsAsInitialViewController(window: window)
}
if(loggedIn != nil){
if(termsAgree != nil){
Utilities.setHomeAsInitialViewContoller(window: window)
}
}
}
class func setLoginAsInitialViewContoller(window:UIWindow) {
let storyboard = UIStoryboard(name: “Login”, bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: “LoginViewController”)
window.rootViewController = controller
window.makeKeyAndVisible()
}
class func setHomeAsInitialViewContoller(window:UIWindow) {
let storyboard = UIStoryboard(name: “Home”, bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: “MainViewNavController”)
window.rootViewController = controller
window.makeKeyAndVisible()
}
class func setTermsAsInitialViewController(window:UIWindow){
let storyboard = UIStoryboard(name: “Terms”, bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: “TermsViewController”)
window.rootViewController = controller
window.makeKeyAndVisible()
}
类中,并在我的Utilities.swift
中这样调用:
AppDelegate.swift
答案 0 :(得分:0)
您不能在iOS 13之前使用SceneDelegate,这实际上会导致编译错误。
xxx 仅在iOS 13.0或更高版本中可用
所有现有应用不需要的SceneDelegate与iOS 13兼容。
您可以只使用最新的Xcode版本构建应用程序,并且应该挺不错的(只需进行一些调整,例如暗模式兼容性和一些新的UI更改,但这不会阻止您的应用程序在iOS上运行13个以上的设备)。
即使我不建议这样做,您仍然可以使用SceneDelegate,但是必须使用function init() {
var input = document.getElementsByClassName('place');
for (i = 0; i < input.length; i++) {
autocomplete = new google.maps.places.Autocomplete(input[i]);
}
}
google.maps.event.addDomListener(window, 'load', init);
标签告诉Xcode该代码仅用于iOS 13+设备。
这意味着iOS 13+设备将使用SceneDelegate,而iOS 12及以下版本将继续使用AppDelegate。此方法需要维护一些仅向后兼容的代码。
对此here
有一些解释