Я пытаюсь использовать App Delegate, чтобы открыть контроллер представления, в зависимости от того, какое быстрое действие было выбрано, но я хочу оставить вкладку Bar Controller внизу. Мой код на данный момент:
func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
let storyboard = UIStoryboard.init(name: "Main", bundle: nil)
let tabBarController = storyboard.instantiateViewController(withIdentifier: "TabBar") as! UITabBarController
let CLLViewC = storyboard.instantiateViewController(withIdentifier: "CLL")
let OLLViewC = storyboard.instantiateViewController(withIdentifier: "OLLStoryboard")
let PLLViewC = storyboard.instantiateViewController(withIdentifier: "PLL")
let desiredVC = storyboard.instantiateViewController(withIdentifier: "OLLStoryboard")
tabBarController.viewControllers = [CLLViewC, OLLViewC, PLLViewC]
if shortcutItem.type == "com.LukeB.Cubing-practice.OLL" {
OLLViewC.present(desiredVC, animated: true, completion: nil)
print("present")
}
}
Это не работает, и я получаю ошибку Attempt to present <Cubing_practice.OLLViewController: 0x105803810> on <Cubing_practice.OLLViewController: 0x103f03c50> whose view is not in the window hierarchy!
Оператор if доступен, хотя, как консоль говорит «присутствует», но ViewController, который открывается, когда я нажимаю быстрое действие, используется по умолчанию, как если бы я только что открыл приложение в обычном режиме.
Что мне нужно сделать, чтобы это исправить?