2017-02-01 5 views
1

Итак, я только что добавил 3d ярлыки в свое приложение. Теперь они открывают правильный ViewController, но я не могу перемещаться по остальной части приложения. Похоже, что ViewController является modal. Как я могу показать навигационную панель?Xcode Swift 3d Shortcuts Touch Navigation Bar, не показывающий

Вот код AppDelegate.swift:

func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) { 

     if shortcutItem.type == "Micheal-Smith.Pathfinder-Society.charLog" 
     { 
      let sb = UIStoryboard(name: "Main", bundle: nil) 
      let charLog = sb.instantiateViewController(withIdentifier: "CharacterLog") as! CharactersTableViewController 
      let root = UIApplication.shared.keyWindow?.rootViewController 

      root?.present(charLog, animated: false, completion: { 
       completionHandler(true) 
      }) 
     } 
     else if shortcutItem.type == "Micheal-Smith.Pathfinder-Society.gmTools" 
     { 
      let sb = UIStoryboard(name: "Main", bundle: nil) 
      let charLog = sb.instantiateViewController(withIdentifier: "gmTools") as! UITabBarController 
      let root = UIApplication.shared.keyWindow?.rootViewController 

      root?.present(charLog, animated: false, completion: { 
       completionHandler(true) 
      }) 
     } 
    } 

ответ

1

Другим способом обработки презентации VC является встраивание вашего VC в контроллер навигации. Затем вы дадите навигационному контроллеру идентификатор раскадровки. Затем вы представите его на экран. Вот пример:

let sb = UIStoryboard(name: "Main", bundle: nil) 
     let charLog = sb.instantiateViewController(withIdentifier: "CharacterLog") as! UINavigationController 
     let root = UIApplication.shared.keyWindow?.rootViewController 
root.present(charLog, animated: false, completion: { 
      completionHandler(true) 
     }) 

«CharacterLog» будет установлен в качестве NavigationController StoryBoard ID вместо ViewController вас, как показано на ссылку ниже.

https://www.screencast.com/t/mcG5v5gvz

Я собираюсь отправить его в ответ, как хорошо, но вот ссылка на учебник Github я сделал для вас, чтобы следовать.

https://github.com/karpisdiem/3D-Quick-Qctions-Swift

+0

Так пытающимся, что единственное, что отсутствует кнопка назад. Когда я иду в этот ViewController либо через обычную навигацию, либо через быстрый контакт, у меня нет возможности вернуться к меню. – Micheal

+0

Итак, я сделал этот проект GitHub, я думаю, что это поможет. https://github.com/karpisdiem/3D-Quick-Qctions-Swift – Karpisdiem

+0

Удивительный. Это работало по большей части. Я получаю забавный результат. Итак, прямо сейчас у меня есть 2 ярлыка. Первый работает красиво. Затем второй работает, но я получаю сообщение в консоли: представление диспетчеров просмотров на отдельных контроллерах просмотров не рекомендуется, и когда я иду в главное меню, мои кнопки не являются стандартным голубоватым цветом (слегка цветным слепым). Когда я нажимаю кнопки в главном меню, они возвращаются к нормальному цвету. Не уверен что происходит. – Micheal

0

Попробуйте загрузить navigationController непосредственно из раскадровки.

let charLog = sb.instantiateViewController(withIdentifier: "NavCharacterLog") as! UINavigationController 
+0

Это открывает приложение, то он падает на экране загрузки дает ошибку LibC++ abi.dylib: завершающей с неперехваченным исключением типа NSException – Micheal