Swift 以编程方式设置初始控制器时显示黑色
你能看看回购协议并帮我吗。为什么我在尝试实例化EviewController时出现黑屏 这是我的AppDelegate:Swift 以编程方式设置初始控制器时显示黑色,swift,uikit,Swift,Uikit,你能看看回购协议并帮我吗。为什么我在尝试实例化EviewController时出现黑屏 这是我的AppDelegate: import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWith
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.init(frame: UIScreen.main.bounds)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier: "ViewController") as! ViewController
guard window != nil else { return true }
self.window!.backgroundColor = .darkGray
self.window!.rootViewController = viewController
self.window!.makeKeyAndVisible()
return true
}
}
两个细节
iOS 13已将windows设置从AppDelegate移动到SceneDelegate,以支持使用(可能是多个)场景,而不是单个窗口。您现在必须按如下方式进行设置:
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
let storyboard = UIStoryboard(name: "Main", bundle: nil)
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = scene as? UIWindowScene else { return }
let vc = storyboard.instantiateViewController (withIdentifier: "Primary") as! ViewController
window = UIWindow(windowScene: windowScene)
window?.rootViewController = vc
window?.makeKeyAndVisible()
}
}
问题在于,在试图使项目停止使用场景代理而改用应用程序代理时,您弄坏了Info.plist中的
UIApplicationSceneManifest
条目。相反,您需要完全删除该条目。它的存在就是使用场景代理体系结构的原因
不过,对于使用应用程序代理的iOS 12和使用场景代理的iOS 13(如我在中所述),最好都能做到这一点。谢谢您的提醒。但我删除了SceneDelegate,因为我想从12开始支持iOS。@MaksimRukomoynikov不,你没有删除它。它就在您的github项目中;你还破坏了项目,弄坏了info.plist。@matt谢谢。但它只是引用(我在新提交中也从文件中删除了它),但这就是现在的全部问题。您已破坏
UIApplicationSceneManifest
条目。您需要完全删除它。@matt哦,非常感谢。我从info.plist中删除了(应用程序场景清单),它开始按预期工作。非常感谢。