访问parentviewcontroller

时间:2012-07-28 14:28:30

标签: iphone objective-c uiviewcontroller

我有一个取消按钮,当我按下取消按钮然后我弹出我当前的viewcontroller。在弹出我的控制器之前,我想访问前一个视图控制器的一个成员(这是一个类Student)。所以我这样做:

StudentProfileViewController *controller = (StudentProfileViewController*)self.parentViewController;
    NSLog(@"%@", controller.student);

我的应用程序在NSLog上崩溃,错误是这样的:

[UINavigationController student]: unrecognized selector sent to instance 0x6865180

奇怪的部分是它说“[UINavigationController student]”,但我的控制器是UIViewController。

任何人都可以对此有所了解。我知道正在做一些愚蠢的错误。

由于

1 个答案:

答案 0 :(得分:3)

只有在您首先从该视图中以模态方式呈现时,parentViewController才会返回您正在寻找的控制器。看起来您正在尝试引用堆栈中的前一个控制器,而不是呈现视图。 在您的情况下,parentViewController是navigationController,如果这是您的呈现方式。您正在将它转换为您希望它的控制器类,但这并不是这样。 更合适的方法是在init方法中传递您希望引用的对象,或者最好是在该控制器完成时使委托方法告诉前一个视图,然后让前一个视图按预期反应。