2015-09-08 1 views
0

У меня есть segue между двумя навигационными контроллерами (A ->B). Используя кнопки, я могу легко перемещаться между этими контроллерами. Проблема в том, что в контроллере B я хотел бы получить доступ к контроллеру A, который ниже в стеке. Я пытался это:Segue между навигационными контроллерами, похоже, не нажимает на стек, но работает кнопка возврата

self.navigationController!.viewControllers[0] as! A 

Это дает мне ошибку, потому что он говорит, я не могу бросить B к A. Осмотр размера self.navigationController!.viewControllers показывает, что он имеет счет 1. Где A пойти в стек?

Тип Segue является «Show (например, Push)»

+0

Println (self.parentViewController .childViewControllers?) Что из положить этот код? –

+0

'[]' – Max

+0

Я думаю, что если вы попытаетесь выдвинуть больше, чем один, то он будет работать. и A не находится в виде стека контрольных пакетов, поскольку A является контроллером корневого представления. Поскольку я просто думаю, что это ответ :) – Miknash

ответ

2

Я предполагаю, что вам на самом деле не имеют SEGUE между двумя навигационными контроллерами. Если ваше приложение является стандартным заявлением о мастер-детали, у вас фактически есть сегмент между A.rootViewControllerB (где A и B являются навигационными контроллерами) и что код, на который вы ссылаетесь, находится в B.rootViewController (например, «DetailViewController») не B.

Таким образом, self является B.rootViewController, self.navigationController является B, и поэтому self.navigationController!.viewControllers[0] является B.rootViewController, не A.rootViewController, как вы ожидаете.

Попробуйте это:

let A = self.navigationController!.parentViewController! as! UINavigationController 
    NSLog("%@", A.viewControllers[0]) 
Смежные вопросы