0

次のナビゲーション パターンを持つナビゲーション コントローラー (NC) と 3 つのビュー コントローラー (A、B、C) があります。

NC->A->B->C

A から C に移動して「戻る」と、B と C の両方の deinit メソッドが呼び出されます。

Unwind Segueを使用して C から A に移動すると、B deinit が呼び出されません。

理由は不明です - アプリに別の同様のシーケンスがあり、「戻る」または「巻き戻す」操作に関係なく deinits が呼び出されます。

アンワインド操作後に B が「生き続ける」原因となるものは何ですか?

4

1 に答える 1

1

問題が見つかりました。問題は、viewDidLoad にある次の行です。

definesPresentationContext = true

ドキュメントから: タイプ UIModalPresentationCurrentContext のプレゼンテーションのために、どの親ビュー コントローラーのビューを表示するかを決定します。このフラグが設定された祖先ビュー コントローラーがない場合、プレゼンターはルート ビュー コントローラーになります。

その結果、「戻る」操作によって取り消されない限り、中央のビュー (つまり「B」) がルートになります。

ビュー C で検索ボックスが一瞬表示されたままになるのを避けるために、ユーザー選択 (行をタップ) から選択した値を取得したsearchController.active = false、ビュー B の prepareForSegue を追加しました。

于 2016-06-27T11:47:23.157 に答える