Чтобы расширить ваш код и, возможно, лучше понять то, что я пытался прокомментировать выше.
UINavigationController* navigationController = [self navigationController];
UIViewController* parentViewControllerForNavigationController = [navigationController parentViewController];
Затем в своем коде вы добавляете родительский ViewController к дочернему ViewController.
[navigationController pushViewController:parentViewControllerForNavigationController animated:YES];
Что независимо от того, где вы выполняете, это вызовет некоторые серьезные проблемы.Я думаю, что вы не совсем понимаете, как работает UINavigationController.Простое объяснение состоит в том, что на самом деле это просто итератор для списка (или очереди, если вы предпочитаете) UIViewControllers (или подклассов UIViewControllers).По сути, способ добавления родительского контроллера представления в контроллер навигации вызывает репликацию контроллера навигации.
Код:
[self.navigationController popViewControllerAnimated:YES];
Просто удаляет последний элемент из спискаон вызовет методы release и dealloc для UIViewController, который находится в конце стека UINavigationController.Что заставит приложение анимировать обратно к предыдущему представлению (так как аргумент animate - «ДА»), вам вообще не нужно вставлять другое представление в стек навигации, что, как кажется, вы пытаетесь сделать.
Однако, если вы, например, пытались выполнить некоторые манипуляции с навигацией, такие как: У вас есть три контроллера представления, UIViewController A, B и C. Контроллер корневого представления - это A. Вы нажимаете B на контроллере навигации, а затемвыполнить некоторую функцию в B и сделать так, чтобы контроллер представления C был помещен в стек навигации, но когда вы вернетесь обратно в представление C, вы захотите получить представление с представлением A, а не с представлением B, вы можете манипулировать возвращаемым массивом, вызывая [self navigationController] viewControllers] и удаление второго последнего объекта и изменение размера массива, а затем вызов [self navigationController] setViewControllers: "resizedArray"], но я хотел бы, чтобы эта функция выполнялась в функции viewDidAppear в реализации контроллера представления C.