В какой-то момент в моем приложении мне нужно вернуться к моему главному (т. Е. Дому) ViewController. Поэтому мне нужно вернуться назад в свой навигационный стек, который теперь заполнен ViewControllers и NavigationControllers. Поэтому я делаю следующее:UIApplication.sharedApplication(). KeyWindow? .rootViewController замораживает мое приложение
// to dismiss the current VC
self.navigationController?.popViewControllerAnimated(true)
// to go back home
UIApplication.sharedApplication().keyWindow?.rootViewController = homeNC
homeNC глобальная переменная, указывающая на NavigationController, содержащий раскадровку экземпляр моего основного «дома» ViewController.
Это работает, но частично. Смысл, он возвращает меня в мой домашний ViewController, но затем становится невосприимчивым к касаниям и прокрутке. Ничто не отвечает, ни кнопки навигации, ни TableViewCells внутри домашнего NC/VC. Xcode не падает, просто сидит там, ожидая.
Я не могу понять, почему. Может ли кто-нибудь подумать, что мне здесь не хватает?
** EDIT **
Может быть, это потому, что я встраивание вложенную VC внутри моего основного (дома) VC. Вот код, и что еще я пробовал так:
homeNC = self.navigationController!
homeVC = self
let discoverVC: UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("DiscoverVC") as UIViewController
// embed discoverVC in this VC
self.addChildViewController(discoverVC)
self.view.addSubview(discoverVC.view)
discoverVC.didMoveToParentViewController(self)
// store self NC for using it by "thank you" VC to come back to home after payment
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
// navigates back but becomes unresponsive
appDelegate.window?.rootViewController = homeVC
// navigates back but becomes unresponsive
appDelegate.window?.rootViewController = homeNC
Я также попытался сохранения ссылки на AppDelegate окно со следующим:
// Initialise sideMenu
window = UIWindow(frame: UIScreen.mainScreen().bounds)
let sideMenu = SSASideMenu(contentViewController: UINavigationController(rootViewController: MainViewController()), leftMenuViewController: LeftMenuViewController())
window!.rootViewController = sideMenu
window!.makeKeyAndVisible()
// get a reference to appdelegate's window so that we can navigate back later
mainWindow = window!
но опять не вернуться обратно, когда я делаю:
appDelegate.window?.rootViewController = mainWindow.rootViewController
Использование Xcode, чтобы приостановить приложение и посмотреть, что происходит в главном потоке во время замораживания. –
Хмм в какой-то момент во время перехода один из журналов говорит: «Представление контроллеров вида на отдельных контроллерах просмотра не рекомендуется». Я нахожусь на iOS8, кстати, – Polis
Как я уже сказал, проверьте трассировку стека. Это обычно лучше, чем гадать. :) –