2016-10-21 9 views
1

У меня есть функция 3d touch в моем делете делегата для shortcutitems, и она должна создать экземпляр viewcontroller, когда элемент 3d touch щелкнул с iphone.3d touch swift 3 не открывается viewcontroller

Вот код:

func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) { 
     if shortcutItem.type == "com.kevinvugts.addStuf" { 
      let sb = UIStoryboard(name: "Main", bundle: nil) 
      let exerciseVC = sb.instantiateViewController(withIdentifier: "exerciseVC") as! exerciseVC 
      let root = UIApplication.shared.keyWindow?.rootViewController 
      root?.present(exerciseVC, animated: false, completion: {() -> Void in 
        completionHandler(true) 
      }) 
     } 
    } 

Этот код результаты в этом предупреждения/ошибки:

Warning: Attempt to present <ActiveRest.exerciseVC: 0x131d39320> on <ActiveRest.ViewController: 0x131d0e470> whose view is not in the window hierarchy! 

Has это ничего общего с задержкой?

Спасибо за помощь!

С уважением.

ответ

1

view is not in the window hierarchy Это означает, что ваш view of your viewcontroller еще не загружен в память. поэтому вы не можете представить viewcontroller. вам нужно будет представить viewcontroller от viewDidAppear вашего viewcontroller (I mean from your rootviewController).

+0

но это вызвано в делете делегата приложения –

+0

, вы не можете представить viewcontroller из 'appdelegate', потому что ваша' viewHierarchy' не готова в 'appdelegate'! – Lion

+0

Я смотрел этот урок и делал то же самое: https://www.youtube.com/watch?v=NO9E5KxixOw –

0
func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) { 
    if shortcutItem.type == "com.kevinvugts.addStuf" { 
     let sb = UIStoryboard(name: "Main", bundle: nil) 
     let exerciseVC = sb.instantiateViewController(withIdentifier: "exerciseVC") as! exerciseVC 
     window?.rootViewController?.addChildViewController(exerciseVC) 

    } 
} 

Я сделал это изменение, и все работает нормально.

Смежные вопросы