我正在使用viewWillDisappear(animated: Bool)
將數據推送到我的服務器,作爲auto-save
類型的功能。但是,有時會發生用戶輸入的數據不完整或無效的事件,因此我不想將其推送到服務器。在這種情況下,我提出了一個顯示通知的UIAlertController
。是否可以延遲或取消視圖消失?
目前通知只允許用戶解除它,但如果用戶願意,允許用戶可以選擇保留在頁面上並進行更正,這將是指數更有利的。
基本上,我想阻止視圖改變,直到用戶對提交的UIAlertController
做出選擇之後。如果這是不可能的,那麼我至少會將用戶送回到先前的視圖,並被授予他們選擇該選項的權利。
目前,我的應用程序使用由SWRevealViewController庫提供的自定義Segue,名爲reveal view controller, push controller
,它允許我在導航到的視圖上使用導航抽屜。如果不這樣做,應用程序將崩潰。
不幸在UIAlertAction
的回調中使用self.navigationController?.popViewControllerAnimated(true)
不會產生任何結果。
編輯: 對於任何在將來讀這篇文章,我有一個變通的解決方案,它可以或可能不是正確的操作方式。不要將按鈕連接到segue以進行導航,而應創建合併每個視圖的手動segue。 (您可以通過右鍵單擊並從一個視圖拖動到另一個視圖來完成此操作),一旦完成此操作併爲其創建一個@IBAction
,則該@IBAction
應該顯示UIAlertController
並且在UIAlertAction
的內部,您應該調用您的segue每當你想移動到下一個視圖時手動使用performSegueWithIdentifier
。如果你想保持觀點,你根本就不會這麼稱呼它。
再一次,這可能或可能不是正確的方法來處理這個問題,但除非有人告訴我另一種更正確的方式,這是我將如何處理它。
目前,我找到了一個解決方法,手動調用segue並執行代碼以顯示警報,同時完全繞過'viewWillDisappear'的需求。但是想要一個正確的答案。 – Hobbyist