0

I'm a bit weak in my Objective C I'll admit, my ultimate goal is pass data from ViewController3 back to ViewController1. Actually, that part is already done and successful. However when calling [self.navigationController popToRootViewControllerAnimated:YES] I get 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];

Sorry for the poorly formatted code, just trying to simplify. Doing [self.navigationController popViewControllerAnimated:YES] has no problem, however it only takes me to ViewController2. I know I'm doing something very wrong here, but can't quite place my finger on how to resolve it. Let me know if I need to clarify.

4

2 に答える 2

2

ゾンビを使用して、EXC_BAD_ACCESS の原因を突き止めます。一部のオブジェクトが解放され、ルート ビュー コントローラーに戻るときに呼び出されます。

このリンクを試してください: Xcode 4 で NSZombieEnabled を設定するにはどうすればよいですか?

于 2013-01-13T01:00:40.353 に答える
1

あなたのコントローラーの1つ(私の意見では最初に)の割り当てが解除されているようです。VC3 メソッドで、self.navigationController が存在することを確認します。次に、彼のすべての VC をチェックする必要があります。初のVCは何も持っていないと思います。問題は、(たとえば)ナビゲーション コントローラーのaddChildViewControllerメソッドを使用するか、smth にコントローラーへの参照がある場合に解決される場合があります。

また、インスタンス間のパスに問題がある場合は、NSNotificationCenter を使用して、あるインスタンスから別のインスタンスに情報を送信できます。

チッ!

于 2013-01-12T23:27:57.173 に答える