Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Progress alert not dismissing from view in Swift 3

Tags:

ios

swift3

I'm trying to create a function for showing and dismissing a ProgressDialog in Swift 3. But in this code the dialog is not dismissing from the view controller.

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)
    }
}

I have also tried the following methods for dismiss this dialog, but none of them worked:

self.alert.view.removeFromSuperview()

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

Please help me. If you guys have any alternate solution, please make a suggestion.

like image 757
Vinayak B Avatar asked Aug 01 '17 04:08

Vinayak B


2 Answers

//Try this

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)
        }
    }
like image 104
Berlin Raj Avatar answered Nov 10 '22 00:11

Berlin Raj


In func showLoadingDialog,

try to use

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

instead of

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

like image 30
Kiester Avatar answered Nov 10 '22 01:11

Kiester