Вы неправильно создаете окно, поэтому в итоге вы получите черный экран. Было бы намного лучше позволить раскадровке создать окно для вас, так как вы не знаете, как это сделать. Просто удалите эту строку полностью:
self.window = UIWindow(frame: UIScreen.main.bounds)
Вы также можете вырезать эту строку, так как она также является otiose (раскадровка сделает это и для вас):
self.window?.makeKeyAndVisible()
Ваша единственная теперь ответственность заключается в том, чтобы установить значение self.window?.rootViewController
. Обратите внимание, что вам не нужно произносить
vc = mainStoryboard.instantiateInitialViewController()!
, потому что это уже контроллер вида root, предоставленный вам раскадровкой. Таким образом, единственная вещь, которую вам нужно сделать в предложенной вами архитектуре, - это заменить контроллер представления root в ситуации, когда пользователь должен быть включен.