Im пытается обнаружить, когда контроллер просмотра выскочил из навигационного стека, таким образом, что у меня есть ссылка на контроллер на следующем уровне стека (в настоящее время работает с Swift 3). СпасибоЕсть ли способ узнать, выведен ли контроллер просмотра из стека навигации?
0
A
ответ
1
UINavigationController
имеет свойство viewControllers
, которое содержит массив контроллеров вида, находящихся в настоящее время в стеке. Вы можете получить массив контроллеров представлений, а затем получить следующий контроллер вида из этого массива:
guard let navController = self.navigationController else {
print("We are not part of a navigation stack!")
return
}
let stack = navController.viewControllers
let stackCount = stackCount
if stackCount > 1 {
let nextVC = viewControllers[stackCount - 2]
//nextVC now contains the view controller one down from the current VC
} else {
//We are the root view controller
}
А, получилось, что это работает, спасибо. Просто подумал, что это также можно сделать, вызвав willmovetoparent и доступ к массиву viewcontrollers. –
Я не верю, что отношения родительского и дочернего элементов навигационных контроллеров и их детей документированы, поэтому я не буду рассчитывать на это. Детали реализации могут измениться из-под вас в некоторых будущих выпусках ОС и сломать ваш код. –
Согласитесь, я внедрил ваше решение и добавил его в свои фрагменты кода. Благодаря! –