Подтвердить что ты не робот

Как получить доступ к стеку в UINavigationController

viewControllers

Контроллеры представлений, которые стек навигации.

@property(nonatomic, copy) NSArray * viewControllers

Обсуждение

Контроллер корневого представления имеет индекс 0 в массив, контроллер обратного просмотра находится в индекс n-2, а верхний контроллер - при индексе n-1, где n - число элементов в массиве.

Назначение нового массива вида контроллеры этого свойства эквивалент вызова setViewControllers: анимированный: метод с анимированным параметром, установленным на NO.

Я запутался, как получить доступ к стеку. У меня три вида в контроллере навигации - контроллер корневого представления, место тестирования sti, sti map.

Как я могу получить доступ к стеку?

4b9b3361

Ответ 1

UINavigationControllers имеют свойство, называемое viewControllers, как вы сказали выше. Поскольку это массив контроллеров View, обращение к определенному контроллеру представления в этой иерархии не отличается от доступа к любому другому объекту в массиве.

UIViewController *theControllerYouWant = [self.navigationController.viewControllers objectAtIndex:(theIndexOfYourViewController)];

Кроме того, ознакомьтесь с навигационными контроллерами в библиотеке разработчиков iOS, в частности в разделе "Изменение навигационного стека".

Ответ 2

Предполагая, что вы имели в виду, что ваш контроллер навигации имеет три контроллера вида, вы должны иметь доступ к контроллеру навигации из любого из трех контроллеров представления, используя self.navigationController.

Итак, если вы хотите получить второй контроллер представления в стеке, вы должны сделать -

UIViewController * viewController = [self.navigationController.viewControllers objectAtIndex:1];

Предполагается, что на контроллере навигации есть как минимум два контроллера вида.

Ответ 3

Массив, возвращаемый свойством viewControllers, представляет собой стек. Они упорядочены в той же последовательности, в которой они были показаны. контроллер с индексом 0 - это контроллер, с которого вы начали. Контроллер, который вы сейчас просматриваете, является самым высоким индексом. Поскольку индексы подсчитываются с нуля, последним индексом элемента будет счетчик (n) -1.

Теперь вы говорите "взгляды" в своем посте. Существует разница между представлениями и контроллерами представлений. Если вы говорите о нескольких частях, которые все видимы одновременно, вы говорите о просмотрах, которые не видят контроллеры. Контроллер навигации предназначен для обработки нескольких контроллеров. Если вы имеете дело с представлениями, чем хотите получить доступ к подзонам текущего представления контроллера представления myViewController.view.subviews Они упорядочивают себя аналогичным образом.