我在Objective C中有点弱我会承认,我的最终目标是将ViewController3中的数据传递回ViewController1。实际上,这部分已经完成并取得了成功。但是当调用[self.navigationController popToRootViewControllerAnimated:YES]时,我得到了EXC_BAD_ACCESS。
ViewController1 <ViewController2Delegate>
- (void) didAddEventLocation:(Event *)event {
NSLog(@"Event name = %@", event.name); //Shows name successfully
}
ViewController2 <ViewController3Delegate>
- (void) didAddEvent:(Event *)event {
[self.delegate didAddEventLocation:event];
}
ViewController3
[self.delegate didAddEvent:event];
[self.navigationController popToRootViewControllerAnimated:YES];
对于格式错误的代码感到抱歉,只是想简化一下。做[self.navigationController popViewControllerAnimated:YES]没有问题,但它只需要我到ViewController2。我知道我在这里做了一些非常错误的事情,但是我无法完全理解如何解决它。如果我需要澄清,请告诉我。
答案 0 :(得分:2)
使用Zombies搜索给你EXC_BAD_ACCESS的内容。某些对象已被释放,现在在弹出到根视图控制器时被调用。
答案 1 :(得分:1)
看起来,你的一个控制器(在我看来是第一个)被解除分配。在VC3方法中检查self.navigationController是否存在。然后你必须检查他所有的VC。我认为没有什么能拿着第一个VC。问题可以通过使用(例如)导航控制器的 addChildViewController 方法解决,或者如果smth将引用您的控制器。
此外,如果您遇到路径问题,可以使用NSNotificationCenter将一些信息从一个实例发送到另一个实例。
HTH!