Быстрое закрытие, а затем открытие приводит к загрузке дважды - PullRequest
0 голосов
/ 08 сентября 2018

Я посмотрел несколько решений по SO, но ни одно из них не работает. У меня проблема с тем, что когда я открываю, а затем закрываю приложение, оно «загружается» дважды подряд. Есть ли способ или код, чтобы остановить это? Приложение сконфигурировано таким образом, что когда пользователь закрывает и затем открывает приложение, код в делегате приложения отправляет приложение в «CommandandControlViewController», который определяет, является ли пользователь зарегистрированным, не зарегистрированным и отправляет соответствующий ViewController.

func applicationWillEnterForeground(_ application: UIApplication) {
    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    appDelegate.window = UIWindow(frame: UIScreen.main.bounds)
    let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let yourVC = mainStoryboard.instantiateViewController(withIdentifier: "CommandAndControlViewController") as! CommandAndControlViewController

    appDelegate.window?.rootViewController = yourVC
    appDelegate.window?.makeKeyAndVisible()
}

1 Ответ

0 голосов
/ 08 сентября 2018

Это может быть , что вызвано тем, что AppDelegate имеет свое собственное свойство "окна", и вы создаете другое "окно" в applicationWillEnterForeground метод, в котором приложение будет иметь два окна, это может привести к его двойной загрузке. Поскольку вы находитесь в AppDelegate.swift , вам не нужно создавать отдельное окно и использовать существующее без написания первых двух строк кода.

Я бы предложил записать последние 4 строки вашего кода в методе didFinishLaunchingWithOptions и попробовать его. Который будет выглядеть примерно так:

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

      let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
      let yourVC = mainStoryboard.instantiateViewController(withIdentifier: "CommandAndControlViewController") as! CommandAndControlViewController 

       //Below rootViewController is of type UIViewController hence even you don't cast "yourVC" to CommandAndControlViewController it will work

      window?.rootViewController = yourVC
      window?.makeKeyAndVisible()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...