Изменить начальный вид контроллера Swift - PullRequest
0 голосов
/ 05 октября 2019

Мне нужно изменить начальный контроллер представления в зависимости от того, включена ли передача голоса или нет. Я пробовал несколько способов, но всегда получаю одну и ту же ошибку: «Значение типа« 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'

Ответы [ 2 ]

0 голосов
/ 10 октября 2019

Вам не нужно объявлять переменную окна вручную

Он доступен в SceneDelegate файле в вашем проекте

Он будет иметь предварительноопределенный метод:

функциональная сцена (_ сцена: 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()
    }



}
0 голосов
/ 05 октября 2019

Вы должны объявить свойство window вручную:

var window: UIWindow?

UIApplicationDelegate - это просто протокол, он не объявляет никаких свойств для вас.

...