Я создал простую демонстрацию навигации, которая имеет 5 контроллеров представления:
- RootViewController (UITableViewController)
- FirstViewController
- SecondViewController
- ThirdViewController
- FourthViewController
1-3-й viewController имеет только кнопку для перехода к следующему контроллеру view с использованием [self.navigationController pushViewController: viewController],
В FourthViewController я пытаюсь изменить self.navigationController.viewControllers с помощью метода setViewControllers. Я просто поместил пустой UIViewController вместо некоторого viewController в стейк и заметил, что если я заменю на viewController ThirdViewController или FourthViewController, то все работает отлично, но когда я пытался заменить First или Second, кнопка возврата исчезает на текущем viewController, и я не могу его вернуть. Похоже, что можно изменять только текущий или предыдущий viewController с помощью setViewControllers. Может быть модификация предыдущих контроллеров представления повреждает стек?
Это содержимое массива self.navigationController.viewControllers, когда он работает идеально:
RootViewController: 0x6022890
FirstViewController: 0x4b26670
SecondViewController: 0x4b26b80
UIViewController: 0x4b33570
FourthViewController: 0x4e158d0
А это пример, когда кнопка возврата на FourthViewController исчезла:
RootViewController: 0x601f910
FirstViewController: 0x6200330
UIViewController: 0x4b237d0
ThirdViewController: 0x4b266e0
Контроллер FourthView: 0x4b23e30
Такая же ситуация произошла, если я попытался добавить пятый и шестой viewControllers - setViewControllers корректно работает только с пятым и шестым viewControllers в этом случае.
Заранее спасибо