2017-01-02 9 views
0

タスクを実行する前にさまざまな情報を入力するようにユーザーに促すアプリケーションがあります。すべての情報がユーザーによって入力されると、私はUIApplication.shared.openUrl(url: url)、次にself.navigationController?.popToRootViewController(animated: true)を行います。このアプリケーションは、ルートビューコントローラにポップバックします。ただし、最後のビューコントローラからのナビゲーションアイテムプロンプトが、ルートビューコントローラのナビゲーションアイテムに含まれています。popToRootViewControllerプロンプトを削除しない

なぜこれが起こっているのか、それを修正する良い方法を理解していますか?私はちょうど""にプロンプ​​トを設定することができましたが、ルートビューコントローラが再表示されますが、症状を緩和するのではなく、問題を解決したいと思います。

更新

パー@Shadさんの答えは、私は以下のコードで私のビューコントローラを更新しましたし、すべてが期待どおりに働いています。

override func viewWillDisappear(_ animated: Bool) { 
    super.viewWillDisappear(animated)  
    self.navigationItem.prompt = nil 
} 
+0

ナビゲーション項目のプロンプトは何ですか?関連するコードで質問を更新してください。 – rmaddy

+0

ナビゲーション項目のプロンプトを設定するコードはありません。ナビゲーションアイテムのプロンプトはすべてストーリーボードファイル内に静的です。 – Jake

+0

私はあなたが持っているものを再生産しようとしましたが、何の問題もありません。ビュー内の – bubuxu

答えて

0

理由は、あなたのがウィンドウに追加されを促し、さらにはを促した上で、親ビュー - コントローラは、添加して表示され、現在表示されていないということです。いくつかのコードを共有すれば、詳細に進むことができます。

しかし、RootViewControllerに戻る前にプロンプ​​トを閉じる方法があります。 -(void) viewWillDisappear:(BOOL)animatedを使用して、のプロンプトを閉じることができます。 -(void) viewWillDisappear:(BOOL)animatedremoveFromSuperview()を呼び出して、プロンプトビューを親ビューコントローラから削除するだけです。 プロンプトがUIViewであると仮定します。

+0

を修正する必要があり、これが私の問題を解決しました。しかし、私はそれが別のビューコントローラ(モーダルなど)にスタックに来る場合にはうまくいくとは思わない。最後のView Controllerに戻ったときにプロンプ​​トが空になることがあります。私はまだこれがどうして起こっているのか不思議です... – Jake

+0

プロンプトのコードを共有できますか? – Shad

+0

viewWillDisappearで提案したもの以外のプロンプトを設定するコードはありません。プロンプトメッセージはすべてストーリーボードファイルに設定されています。 – Jake

関連する問題