У меня есть приложение, которое использует 3D Touch, чтобы перейти к определенному VC в моем приложении. Проблема в том, что когда приложение запускается нормально, все мои VC встроены в контроллер просмотра навигации. Но поскольку я пропускаю последовательность запуска и прыгаю прямо в VC, VC, с которым я перехожу, не встроен в Nav VC.Пытается внедрить VC в NavigationVC из performActionFor shortcutItem через 3d touch на значок приложения
Вот что я пытаюсь в App Делегат
func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
guard TouchActions(rawValue: shortcutItem.type) != nil else {
print("3d not working")
completionHandler(false)
return
}
print("3d touch workig")
let mainStoryboard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let addPersonVC : AddPersonViewController = mainStoryboard.instantiateViewController(withIdentifier: "AddPerson") as! AddPersonViewController
// pass the stack to the addPersonVC
addPersonVC.coreDataStack = coreDataStack
let navController:UINavigationController = mainStoryboard.instantiateViewController(withIdentifier: "navController") as! UINavigationController
navController.pushViewController(addPersonVC, animated: true)
// self.window? = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = navController
self.window?.makeKeyAndVisible()
completionHandler(true)
}
Этот код работает, но когда я пытаюсь выйти из этого VC, приложение просто сидит там отвечать на запросы. Мне как-то нужно встроить addPersonVC в основной Nav VC, который настроен в раскадровке. (Встроенный контроллер навигации был создан в раскадровке, упаковывают, что имеет значение.)
Я пытался сделать тебя первым вариант, но он, похоже, не работает. Какие-либо предложения? Я обновил свой вопрос выше, чтобы показать вам, что я пытаюсь. – icekomo
@icekomo Я не программист Swift, однако, решение было в option2 для Swift. Теперь ваш обновленный код полностью перепутался. Вам необходимо добавить ** AddPersonViewController ** как ** rootViewController ** в ваш UINavigationController. Также вы не можете «нажимать» «addPersonVC», вам нужно ** self.window? .rootViewController = navigationController **, проверьте ссылку option2, как я сказал, для примера Swift вы увидите ответ там m8. –
@icekomo http://stackoverflow.com/questions/26753925/set-initial-viewcontroller-in-appdelegate-swift Вы можете проверить здесь еще один ответ для Swift. –