1

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

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

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

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

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

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

谢谢

4

1 回答 1

3

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

于 2012-07-28T14:40:59.670 回答