快速更改初始视图控制器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速更改初始视图控制器相关的知识,希望对你有一定的参考价值。

我需要根据是否启用画外音来更改初始视图控制器。我已经尝试了多种方法,但总是收到相同的错误:“类型'AppDelegate'的值没有成员'window'”这就是我的didFinishLaunchingWithOptions中的内容。

    print("voiceover: (voiceOver)") // prints if voice over is on

    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    let storyboard = UIStoryboard(name: "Main", bundle: nil)

    let initialViewController = storyboard.instantiateViewController(withIdentifier: "voiceoverViewController")

    self.window?.rootViewController = initialViewController
    self.window?.makeKeyAndVisible()

类型'AppDelegate'的值没有成员'窗口'

答案

您必须手动声明window属性:

var window: UIWindow?

UIApplicationDelegate只是一个协议,它没有为您声明任何属性。

另一答案

您不必手动声明窗口变量

它在您项目的SceneDelegate文件中可用

它将具有预定义的方法:

func scene(_ scene:UIScene,willConnectTo会话:UISceneSession,选项connectionOptions:UIScene.ConnectionOptions)

示例

func scene(_ scene: UIScene, willConnectTo session: UISceneSession,
 options connectionOptions: UIScene.ConnectionOptions) {

    if let windowScene = scene as? UIWindowScene {          
        self.window = UIWindow(windowScene: windowScene) 
        let initialViewController = 
            storyboard.instantiateViewController(withIdentifier: "voiceoverViewController")            
        self.window!.rootViewController = initialViewController
        self.window!.makeKeyAndVisible()
    }
}

以上是关于快速更改初始视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式设置初始视图控制器 Swift

更改首次启动的初始视图控制器

如何在成功登录后更改初始视图控制器?

更改UIPageViewController中显示的初始视图控制器

从另一个片段的其他视图控制片段的视图

更改初始视图后如何加载状态栏