2

UINavigationControllerのセレクターを呼び出しpopToViewControllerていますが、効果がありません。アプリがクラッシュしたりフリーズしたりすることはなく、現在のビュー コントローラーのすべてのタッチ要素がそのまま残ります。

以下のスクリーンショットを参照してください。何も起こらないという事実を除いて、実行またはコンソールで目立ったエラーは発生しません。

私が検討したこと:

  • 私はメインスレッドにいますか?はい、 performSelectorOnMainThreadスクリーンショットの上部にある呼び出しでこれを確認しました。
  • 目的のビューコントローラーは既にプッシュされていますか? はい、これはスクリーンショットのデバッグ パネルで確認できます。mLoginViewControllerそこにあります。
  • popTo を試みる前に、表示されたモーダル ビュー コントローラーにいますか? いいえ、これは何も提示されていない段階で起こっています。
  • さまざまな場所で呼び出すアラートは問題の一部ですか? かなり可能性があります-おそらく、現在のビューコントローラーの表示が完了していない可能性がありますか?

popTo を試行する直前に実行が停止したことを示す XCode のスクリーンショット

実行のこの時点で、263 ~ 270 行目のコードが実行され、ルート nav コントローラーの viewControllers 配列がクリアされる場合があることに注意してください。これは、現在画面に表示されているビューコントローラーが配列に含まれていないことを意味します。それは popTo を台無しにする可能性がありますか?

同様の質問:

XCode 5.0 (5A1413) を実行しており、iOS 7.2 を搭載した iPhone 5 でコンパイルして実行しています。

4

2 に答える 2

1

メソッドから返された結果を確認しpopToViewController:animated:ます。これは、nav コントローラーがスタックからポップして自分のものに到達するビュー コントローラーの配列を返します。nil の場合は、探しているコントローラーが見つからないことを意味します。正しい結果が含まれている場合は、nav コントローラーが要求どおりに動作していると判断し、問題は別の場所にあることを示しています。

/CXLoginViewControllerに応答してナビゲーション スタックを変更するコードが含まれている可能性はありますか? メソッドを正しく実装していない可能性のあるカスタム ナビゲーション コントローラーに何かありますか(これは過去に私に起こりました)。viewWillAppear:viewDidAppear:popToViewController:animated:

performSelectorOnMainThread:参照しているアラートが 235 行目の呼び出し直後のアラートである場合、問題が発生している可能性があります。performSelectorOnMainThreadは、実行ループによって呼び出されるメソッド (セレクターによって表される) をキューに入れます。呼び出し直後に UI をいじると、問題が発生する可能性があります。そのアラートを取り出してみましたか?

于 2013-10-03T19:10:05.303 に答える