1

ビューコントローラーに何かをチェックさせたいのですが、それが真の場合はユーザーがビューコントローラーを使用できるようにし、偽の場合はユーザーにアラートを表示し、ユーザーを元の場所に送り返します。

だから私はこれをif文の最後に追加しようとしましたviewDidLoad

[self.navigationController popViewControllerAnimated:YES]

ただし、エラーが発生しました:

2014-08-09 20:12:59.731 ProjectName[1978:60b] ネストされたポップ アニメーションにより、ナビゲーション バーが破損することがある

2014-08-09 20:13:00.118 ProjectName[1978:60b] 予期しない状態でナビゲーション遷移を終了しています。ナビゲーション バーのサブビュー ツリーが破損する場合があります。

この StackOverflow の質問pushViewControllerから、または終了popViewController前の呼び出しviewDidLoadは安全ではないことを学びました。これを回避する方法はありますか?

TLDR:ビュー コントローラーをスタックにプッシュし、アラートを表示してから、ビュー コントローラーをスタックからポップしようとしています。

編集: コードを追加しました。

4

1 に答える 1

2

アラートを表示したい場合、これはかなり簡単です。

1 -内から[UIAlertView show]メソッドを呼び出しますviewDidAppearviewDidAppearビューコントローラーがスタックに完全にプッシュされたときに、ビューライフサイクルの最後になるので、使用することをお勧めします。したがって、ポッピングは無害です。

2 - clickedButtonAtIndexデリゲート メソッドで、 を呼び出しますpopViewControllerAnimated

于 2014-08-09T19:46:41.580 に答える