场景代表如何使用iOS 13之前的版本?

时间:2019-10-01 08:54:06

标签: swift appdelegate ios13 uiscenedelegate

所以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

1 个答案:

答案 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

有一些解释