Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 以编程方式设置初始控制器时显示黑色_Swift_Uikit - Fatal编程技术网

Swift 以编程方式设置初始控制器时显示黑色

Swift 以编程方式设置初始控制器时显示黑色,swift,uikit,Swift,Uikit,你能看看回购协议并帮我吗。为什么我在尝试实例化EviewController时出现黑屏 这是我的AppDelegate: import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWith

你能看看回购协议并帮我吗。为什么我在尝试实例化EviewController时出现黑屏

这是我的AppDelegate:

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
    }
}
两个细节

  • 在上一个Xcode版本中创建的应用程序
  • iOs部署目标从13更改为12
  • 已移除场景
  • 在目标设置选项中,主界面已清除
  • 在info.plist中,StoryBoardName和DelegateClassName也被删除

  • 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中删除了(应用程序场景清单),它开始按预期工作。非常感谢。