2010-11-18 17 views
0

私は私のUINavigationControllerに3つのビューコントローラを持っています。 pushViewControllerとpopViewControllerを使用してView Controllerを切り替えると、すべてが問題ありません。はランタイムクラッシュを引き起こします。

しかし、順序を並べ替えるためにsetViewControllerを呼び出すと、後方ナビゲーションバーボタンをタッチするとクラッシュします。

[UIBarButtonItem performSelector:withObject:withObject]:割り当て解除されたインスタンスへのメッセージ。

元のスタックはAとBです。次に、AとCはベローのように設定しました。

[delegate.navigationController setViewControllers:[NSArray arrayWithObjects:[[delegate.navigationController viewControllers] objectAtIndex:0]、controllerC、nil]アニメーション:はい];

私が奇妙なことを発見したのは...アニメーションでそのメソッドを呼び出すと、クラッシュは発生しません。

私のコードのアニメーションパラメータの秘密は何ですか?助けてください... :(

答えて

1

私はそれが自動リリース競合状態だと思っています。あなたは自動解放であなたのcontrollerCインスタンスを割り当てていますか?もしそうなら、それを避けて、それの代わりにsetViewControllersへの呼び出しの後。それはあなたの問題を解決するかどうか私に教えてください。

は、私は完全にここで何が起こっているか理解して主張したが、その打撃を与えることはできません。

-S

0

私が持っていましたその同じ問題で、iOSのバグのように思えました。私にとってうまくいった回避策は、最初に新しいビューコントローラ:

[navigationController pushViewController:controllerC animated:YES]; 

はその後(の間でのものを排除するために)適切な値にビューコントローラのスタックを設定します。

NSArray *newViewControllers = [NSArray arrayWithObjects:controllerA, controllerC, nil]; 
[navigationController setViewControllers:newViewControllers animated:NO]; 
+0

少し奇妙な...、それはナビゲーションコントローラ上leftBarButtonを隠します。ただ消えますが、私はそれに触れることができます。とにかく、クラッシュはありません。このSDKはどうしたの? –

+0

あなたはどんな解決策を見つけましたか?はいの場合は、共有してください。私は同様の問題に直面しています。 leftbarButtonは消えますが、触れることができます。 – Pria

関連する問題