Я успешно реализован ярлык 3D сенсорный с домашнего экрана, используя этот код в приложение делегата:3D Touch: Представление из текущего VC
@objc(application:performActionForShortcutItem:completionHandler:) @available(iOS 9.0, *)
func application (_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler completionHandle: @escaping (Bool) -> Void) {
if shortcutItem.type == "com.myAppName.addtask" {
let storyBoard = UIStoryboard(name: "Main", bundle: nil)
let editorVC = storyBoard.instantiateViewController(withIdentifier: "myVC_ID") as! myVC_Class
let rootVC = UIApplication.shared.keyWindow?.rootViewController
rootVC?.present(editorVC, animated: false, completion: {() -> Void in
completionHandle(true)
})
}
}
Однако, проблема заключается в том, что она всегда ожидают представить от root viewController. Если пользователь покидает приложение из другого VC, а затем пытается ярлык, я получаю эту ошибку:
Warning: Attempt to present xxx on (xxxx.ViewController: 0x7f9acc83e000) whose view is not in the window hierarchy!
Если пользователь был в приложении и последний вид был корень VC, ярлык на главном экране прекрасно работает. Итак, как я могу это сделать, чтобы он отлично работал независимо от того, что последний раз использовал VC?
Благодарим за быстрый ответ. Я предполагаю, что это мой вопрос, хотя, я знаю, сценарий заключается в том, что контроллер корневого представления представляет VC2, затем пользователь уходит, пытается вернуться в 3D Touch, и я получаю это сообщение об ошибке. Итак, как мне изменить свой код для представления из другого VC OR, и это еще лучше, вернитесь к/вызовите разматывание назад к корневому VC, а затем откройте его. –
Э-э-э-э-э-э-э-э-э-э ... Это вопрос с подвохом? – matt
Не считая последнего комментария, я просто удалил его. Теперь работает. Спасибо. –