2017-01-02 64 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)animated調用removeFromSuperview()刪除從父視圖 - 控制器的提示視圖。假設你的提示是一個UIView。

+0

這解決了我的問題。然而,我不認爲它會在另一個視圖控制器進入堆棧的情況下工作(例如模式)。這會在返回到最後一個視圖控制器時導致提示爲空。我仍然好奇爲什麼會發生這種情況... – Jake

+0

你能分享你的提示視圖的代碼嗎? – Shad

+0

我沒有代碼設置提示,而不是你在viewWillDisappear中建議的提示。提示信息全部在故事板文件中設置。 – Jake