0

我承认我的目标 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。我知道我在这里做错了什么,但不能完全确定如何解决它。让我知道是否需要澄清。

4

2 回答 2

2

使用僵尸追捕给你 EXC_BAD_ACCESS 的东西。某些对象已被释放,现在在您弹回根视图控制器时被调用。

试试这个链接: 如何在 Xcode 4 中设置 NSZombieEnabled?

于 2013-01-13T01:00:40.353 回答
1

看起来,您的一个控制器(在我看来是第一个)已被释放。在 VC3 方法中检查 self.navigationController 是否存在。然后你必须检查他所有的风险投资。我觉得没啥先拿VC的。问题可以通过使用(例如)导航控制器的addChildViewController方法来解决,或者如果 smth 将引用您的控制器。

此外,如果它们之间的路径有问题,您可以使用 NSNotificationCenter 将一些信息从一个实例发送到另一个实例。

于 2013-01-12T23:27:57.173 回答