2017-08-01 34 views
5

我想在Swift 3中創建一個顯示和取消ProgressDialog的函數。但是在這段代碼中,對話框並沒有從視圖控制器中消失。在Swift 3中不會關閉進度警報

func showLoadingDialog(show : Bool) { 
    if show { 
     self.alert = UIAlertController(title: nil, message: "Please wait...", preferredStyle: .alert) 
     let loadingIndicator = UIActivityIndicatorView(frame: CGRect(x: 10, y: 5, width: 50, height: 50)) 
     loadingIndicator.hidesWhenStopped = true 
     loadingIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.gray 
     loadingIndicator.startAnimating() 
     self.alert.view.addSubview(loadingIndicator) 
     self.present(self.alert, animated: true, completion: nil) 
    }else{ 
     self.dismiss(animated: false, completion: nil) 
    } 
} 

我自己也嘗試了關閉該對話框下面的方法,但他們沒有工作:

self.alert.view.removeFromSuperview() 

self.alert.view.alpha = 0 
self.presentingViewController?.dismiss(animated: true, completion: nil) 

請幫助我。如果你們有其他解決方案,請提出建議。

回答

4

//試試這個

func showLoadingDialog(show : Bool) { 
     if show { 
      if self.alert == nil{ 
       self.alert = UIAlertController(title: nil, message: "Please wait...", preferredStyle: .alert) 
       let loadingIndicator = UIActivityIndicatorView(frame: CGRect(x: 10, y: 5, width: 50, height: 50)) 
       loadingIndicator.hidesWhenStopped = true 
       loadingIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.gray 
       loadingIndicator.startAnimating() 
       self.alert.view.addSubview(loadingIndicator) 
      } 
      if !self.alert.isBeingPresented { 
       self.present(self.alert, animated: true, completion: nil) 
      } 

     }else{ 
      self.alert.dismiss(animated: false, completion: nil) 
     } 
    } 
3

func showLoadingDialog

嘗試使用

self.alert.dismiss(animated: false, completion: nil)

,而不是

self.dismiss(animated: false, completion: nil)

+0

它工作一次。但我多次在我的ViewController中調用這個函數。第二次警報不被解僱。我從網絡響應塊調用這個函數。 –

+0

請編輯您的問題,並提供更多的代碼塊介紹如何實施,以便我們可以更多地瞭解問題。謝謝! – Kiester