如何获取NavigationController顶部视图的引用

时间:2011-10-02 20:28:40

标签: iphone objective-c uiviewcontroller uinavigationcontroller

我在一些UIViewControlle中需要回到上一个,我使用这段代码:

NSLog(@"%@", [self.navigationController popViewControllerAnimated:YES]);
// Here I need to reference to the view I am going go to to call some function before this view is being displayed
NSLog(@"Done button pressed");

但是(正如评论中所写),我需要获得对pop函数执行后显示的视图的引用(上一个viewController。

3 个答案:

答案 0 :(得分:1)

您可以使用UINavigationController属性topViewController,它为您提供堆栈顶部的视图控制器。 只需在弹出之前调用它,或者将其设置为下一个:)

您还可以访问viewControllers属性以获取导航控制器堆栈包含的所有视图控制器。

答案 1 :(得分:0)

查看online docs中的viewControllers属性。它将为您提供导航堆栈中的一组视图控制器:

  

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

因此,您想要的视图控制器将位于索引n-2

答案 2 :(得分:0)

除了@Geoffroy和@Maurice Kelly所说的......

在调用popViewControllerAnimated:函数

之前,我应该引用该对象
  // I should get reference to the object here before calling the popViewControllerAnimated:  function
    NSLog(@"%@", [self.navigationController popViewControllerAnimated:YES]);
    NSLog(@"Done button pressed");