viewControllers
Контроллеры представления, в настоящее время стек навигации.
@property (nonatomic, copy) NSArray * viewControllers
Обсуждение
Контроллер корневого представления имеет индекс 0 в массив, контроллер заднего вида находится в индекс n-2, а верхний контроллер по индексу n-1, где n - количество элементы в массиве.
Назначение нового массива представления контроллеры этого свойства эквивалентно вызову setViewControllers: animated: method с анимированным параметром, установленным на NO.
Я не понимаю, как получить доступ к стеку, у меня есть три представления в контроллере навигации - контроллер корневого представления, место тестирования sti, карта sti.
Как я могу получить доступ к стеку?
Предполагая, что вы имели в виду, что ваш навигационный контроллер имеет три контроллера представления, вы должны иметь возможность доступа к навигационному контроллеру с любого из трех контроллеров представления, используя self.navigationController
.
Поэтому, если вы хотите получить второй контроллер вида в стеке, вы должны сделать -
UIViewController * viewController = [self.navigationController.viewControllers objectAtIndex:1];
Это предполагает, что на навигационном контроллере есть по крайней мере два контроллера представления.
UINavigationControllers
имеет свойство, называемое viewControllers
, как вы уже сказали выше. Поскольку это массив контроллеров представления, ссылка на конкретный контроллер представления в этой иерархии ничем не отличается от доступа к любому другому объекту в массиве.
UIViewController *theControllerYouWant = [self.navigationController.viewControllers objectAtIndex:(theIndexOfYourViewController)];
Кроме того, ознакомьтесь со статьей Navigation Controllers в библиотеке разработчиков iOS, в частности, разделом «Изменение стека навигации».
Массив, возвращаемый свойством viewControllers, является стеком. Они упорядочены в той же последовательности, в которой они были показаны. контроллер с индексом 0 - это контроллер, с которого вы начали. Контроллер, на который вы сейчас смотрите, имеет самый высокий индекс. Поскольку индексы отсчитываются от нуля, последним индексом элемента будет count (n) -1.
Теперь вы говорите «просмотров» в своем посте. Существует разница между представлениями и контроллерами представления. Если вы говорите о нескольких частях, которые все видимы одновременно, то вы говорите о представлениях, а не о контроллерах представления. Контроллер навигации предназначен для работы с несколькими контроллерами представления. Если вы имеете дело с представлениями, то вы хотите получить доступ к подпредставлениям текущего представления контроллера представления. myViewController.view.subviews
Они упорядочиваются аналогичным образом.