如何在UINavigationController中访问堆栈

Dhe*_*eti 23 iphone objective-c uinavigationcontroller ios

viewControllers

视图控制器当前位于导航堆栈上.

@property(nonatomic, copy) NSArray * viewControllers
Run Code Online (Sandbox Code Playgroud)

讨论

根视图控制器位于数组中的索引0处,后视图控制器位于索引n-2处,顶部控制器位于索引n-1处,其中n是数组中的项目数.

为此属性分配新的视图控制器数组等效于调用setViewControllers:animated:方法,并将动画参数设置为NO.

我很困惑如何访问堆栈我在导航控制器中有三个视图 - 根视图控制器,sti测试位置,sti地图.

我怎样才能访问堆栈?

Con*_*ion 46

UINavigationControllers拥有一个viewControllers如上所述的财产.由于这是一个视图控制器数组,因此引用此层次结构中的特定视图控制器与访问数组中的任何其他对象没有什么不同.

UIViewController *theControllerYouWant = [self.navigationController.viewControllers objectAtIndex:(theIndexOfYourViewController)];
Run Code Online (Sandbox Code Playgroud)

另外,请查看iOS Developer Library中的Navigation Controllers文章,特别是"修改导航堆栈"一节.


Dee*_*olu 5

假设您的意思是您的导航控制器有三个视图控制器,您应该能够使用三个视图控制器中的任何一个访问导航控制器self.navigationController.

所以如果你想在堆栈中获得第二个视图控制器,你应该这样做 -

UIViewController * viewController = [self.navigationController.viewControllers objectAtIndex:1];
Run Code Online (Sandbox Code Playgroud)

这假设导航控制器上至少有两个视图控制器.