Проблема AppDelegate, когда я закрываю Onboarding и запускаю приложение во второй раз

Я делаю адаптацию с помощью UIPageViewController, но когда я запускаю приложение во второй раз, Xib не работает

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

        //////OnBoarding
        let lunchbefor = UserDefaults.standard.bool(forKey: "haslunched")
        self.window = UIWindow(frame: UIScreen.main.bounds)
        let lunchstoryboard = UIStoryboard(name: "onboarding", bundle: nil)
        let mainstoryboard = UIStoryboard(name: "Main", bundle: nil)

        var vc: UIViewController
        if lunchbefor{
            window?.rootViewController = MainVC()
            vc = mainstoryboard.instantiateInitialViewController()!

        }else{
            vc = lunchstoryboard.instantiateViewController(withIdentifier: "start")
        }
        UserDefaults.standard.set(true, forKey: "haslunched")
        if lunchbefor == false{

            self.window?.rootViewController = vc
            self.window?.makeKeyAndVisible()
        }else{
            window?.makeKeyAndVisible()
            window?.rootViewController = MainVC()

        }

        return true
    }

ошибка:

Тема 1: Неустранимая ошибка: неожиданно найдено nil при развертывании необязательного значения"

в этой строке:

vc = mainstoryboard.instantiateInitialViewController()!

person erfan Nalbandian    schedule 18.12.2019    source источник
comment
Что вы имеете в виду под не работать?   -  person Sazzad Hissain Khan    schedule 18.12.2019
comment
происходит авария @sazzad-hissain-khan   -  person erfan Nalbandian    schedule 18.12.2019
comment
не могли бы вы предоставить сообщение об ошибке, которое появляется?   -  person Maciej Gad    schedule 18.12.2019
comment
Тема 1: Неустранимая ошибка: неожиданно найдено nil при развертывании необязательного значения в этой строке: vc = mainstoryboard.instantiateInitialViewController()!   -  person erfan Nalbandian    schedule 18.12.2019
comment
Отвечает ли это на ваш вопрос? Создание экземпляра Initial View Controller предоставляет Nil   -  person Maciej Gad    schedule 18.12.2019


Ответы (2)


Я нахожу ответ, я сделал это:

  var vc: UIViewController

    if lunchbefor{
        window?.rootViewController = MainVC()
       // vc = mainstoryboard.instantiateInitialViewController()!
        vc =  MainVC()

    }else{
        vc = lunchstoryboard.instantiateViewController(withIdentifier: "start")
    }
person erfan Nalbandian    schedule 18.12.2019

Если вы хотите использовать instantiateInitialViewController, вам нужно выбрать Is Initial View Controller в раскадровке (красная стрелка на экране), и вы увидите индикатор того, что контроллер представления является начальным (зеленая стрелка).

Выбор ‹кода›I Initial View Controller‹/code›

Кроме того, рекомендуется не использовать принудительную развертку (!), так как это приведет к сбою вашего приложения, когда переменная равна nil.

person Maciej Gad    schedule 18.12.2019