我在两个导航控制器之间有一个segue(A
- > B
)。使用按钮,我可以无缝地在这些控制器之间导航。问题是在控制器B中,我想访问控制器A,它在堆栈中较低。我正在尝试这个:
self.navigationController!.viewControllers[0] as! A
这给了我一个错误,因为它说我无法将B
投射到A
。检查self.navigationController!.viewControllers
的大小表明它已计数1
。 A
在哪里上堆?
segue类型是“Show(例如Push)”
答案 0 :(得分:2)
我猜你在两个导航控制器之间没有真正的区别。如果您的应用是标准的主要详细信息应用,那么您实际上在A.rootViewController
→B
(其中A
和B
是导航控制器)之间有一个segue,并且您所指的代码位于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])