Iphone 访问parentviewcontroller

Iphone 访问parentviewcontroller,iphone,objective-c,uiviewcontroller,Iphone,Objective C,Uiviewcontroller,我有一个取消按钮,当我按下取消按钮,然后我弹出我的当前viewcontroller。在弹出我的控制器之前,我想访问上一个视图控制器的一个成员(这是一个班级学生)。所以我是这样做的: StudentProfileViewController *controller = (StudentProfileViewController*)self.parentViewController; NSLog(@"%@", controller.student); 我的应用程序在NSLog线上崩溃,错误

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

StudentProfileViewController *controller = (StudentProfileViewController*)self.parentViewController;
    NSLog(@"%@", controller.student);
我的应用程序在NSLog线上崩溃,错误如下:

[UINavigationController student]: unrecognized selector sent to instance 0x6865180
奇怪的是上面写着“[UINavigationController学生]”,但我的控制器是UIViewController

有人能解释一下吗。我知道有些愚蠢的错误正在发生


谢谢

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

嗨,dean,我还在学习委托,你能给我一个很好的教程链接来使用委托来满足这个要求吗,就像我想在完成并弹出时通知我以前的视图控制器一样。谢谢教授,我不在办公桌旁,没有看到你的问题。如果你还卡着,请告诉我。很高兴为您指出正确的信息。