2011-10-25 2 views
2

IOS 5の次のステートメントのクラッシュに直面しています。これは他のIOSバージョンでも機能するようです。このシナリオでは、viewControllerからモーダルとしてビューを提示しています。次に、キャンセルボタンをタップすると、以下のコードを呼び出してモーダルビューとしての自己を破棄します。この仕事はここまでうまくいく。モーダル表示を消しながらIOS 5でクラッシュする

30秒後に最新のデータを取得するためにサーバーを呼び出すとビューが再描画され、「キャンセル」ボタンをタップするとビューが再度描画された後、クラッシュする - IOS 5.0のみ。これの手掛かりは?

[self dismissModalViewControllerAnimated:YES]; 

エラー:

Single stepping until exit from function -[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:] 

これは、スレッドトレースでエラーのスクリーンショットです:

enter image description here

+0

同じ問題は私が思うように:http://stackoverflow.com/questions/11832981/dismissviewcontrolleranimated-crash-at-ios5 –

答えて

1

してみてください。

この中には何かがあります。link私は間違っていると認識しています。

ビューを表示するときに問題が発生しますが、アプリケーションを終了するとアプリケーションがクラッシュします。今、問題は何ですか?私のコードでは、popToRootViewControllerAnimated:のすぐ隣のビューを提示していました。リンクに貼り付けたとおりに表示されるように、iOS5にはモーダルビューを表示する際にいくつかの制限があるようです。リンクのまとめとして、あなたはpresentModalViewControllerをすることはできません:アニメーション:のviewDidLoadとviewWillAppear前:終了されています

It turns out that iOS guidelines don't want model view controllers to be presented in viewDidLoad or in viewWillAppear

まさに私のせいだったこと。これがあなたに起こっているなら、あなたは何をすることができますか?遅延後にモーダルビューを表示することができます。だから、代わりにこれを使用する:

[[self navigationController] popToRootViewControllerAnimated:NO]; 
double delayInSeconds = 0.5; 
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
    [self presentModalViewController:loginNavController animated:YES];; 
}); 

(:afterDelay:私はperformSelectorたとします。また、作品を)

[[self navigationController] popToRootViewControllerAnimated:NO]; 
[self presentModalViewController:loginNavController animated:YES]; 

あなたがこれを使用する必要があります...

をしていることを確認してくださいdelayInSecondsは大きいですviewDidLoadとviewWillAppearを終了させるのに十分です。これは非常に正確でエレガントではないが、少なくともそれが動作する場合は申し訳ありません。

よろしくお願いいたします。

+0

で私を助けません:http://stackoverflow.com/questions/11832981/dismissviewcontrolleranimated-crash -at-ios5 –

+0

あなたが編集したリンクは、私にとっては死んだリンクです。 –

+0

@PaulCezanneそれはブログの投稿が解雇されたようです。しかし、私の答えは、コンテンツの抽出です。 –

0

は、コントローラのどこかに存在し、別の参照ですか?もしそうでなければ、解雇時にあなたのオブジェクトを解放していますが、あなたはまだそのメソッドの1つに入っています。管理者は、私は私の場合には何が起こっているか説明することができる(私の最後の1が削除された)新しいコメントを追加することを可能にする場合は

+0

私は彼が[self dismissModalViewControllerAnimated:YES]をしていると思います。親viewControllerでは、モーダル1ではなく 私はいくつかのアプリで同じ問題を抱えていました。これまではうまくいきましたが、今はiOS 5で何かsimillarが発生しています。 –

+0

モーダルビューから[self dismissModalViewControllerAnimated:YES]を呼び出しています。私の見解を再描画しない限り、それはうまく動作します。ビューが再描画されると、ここでクラッシュし始めます。IOS 5.0以外のすべてのIOSで常に正常に動作します。 – Abhinav

+0

@ArturOzierańskiあなたは正しく、私の悪いです。しかし、私はまだそれがゾンビの問題かもしれないと思う。ゾンビ検出が有効になっていますか? – Sulthan

1

[[super presentingViewController] dismissModalViewControllerAnimated:YES];

+0

これは役に立ちません。 – Abhinav

+0

私はこれを試してもうまくいきませんが、このようにしようとすると[[super renderedViewController] presentModalViewController:mailer animated:YES]; それは動作しますが、それでもクラッシュします。 – Gaurav

+0

は私を助けません:http://stackoverflow.com/questions/11832981/dismissviewcontrolleranimated-crash-at-ios5 –

関連する問題