为什么在再次触发警报关闭时不起作用?

时间:2019-03-15 07:00:11

标签: ios swift uialertview uialertcontroller

在向服务器发出请求之前,我会显示加载程序。收到答案后,将调用停止加载程序的功能。

第一次运行正常。但是,当您重新进入页面时,加载器不会关闭,并且会永远旋转。 (我认为这是因为请求已经更快地进行了,并且没有明显的延迟)。

为清楚起见,我在代码中添加了标记。
请告诉我问题出在哪里,如何解决?

var alert : UIAlertController?

func showLoader(){
    self.alert = UIAlertController(title: nil, message: NSLocalizedString("pleaseWait", comment: "Текст ожидания загрузки"), preferredStyle: .alert)

    let loadingIndicator = UIActivityIndicatorView(frame: CGRect(x: 10, y: 5, width: 50, height: 50))
    loadingIndicator.hidesWhenStopped = true
    loadingIndicator.style = UIActivityIndicatorView.Style.gray
    loadingIndicator.startAnimating();

    self.alert!.view.addSubview(loadingIndicator)
    present(self.alert!, animated: true, completion: nil)
    Logger.Log("Alert is presented")
}

func stopLoader(){
    if let _ = self.alert {
        Logger.Log("Loader isBeingPresented = \(self.alert!.isBeingPresented)")
        Logger.Log("Loader isBeingDismissed1 = \(self.alert!.isBeingDismissed)")

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

        Logger.Log("Loader isBeingDismissed2 = \(self.alert!.isBeingDismissed)")

        self.alert = nil

        Logger.Log("Loader dismissed")
    } else {
        Logger.Log("Alert failed")
    }
}
  

**选择时间:2019-03-01 17:00:00 +0000 ** //第一次尝试
  **出现警报**
  **文件存在! **
  ** requestDone **
  ** Loader isBeingPresented = false **
  ** Loader isBeingDismissed1 = false **
  ** Loader isBeingDismissed2 = true **
  **装载机开除**
  **选择:2019-03-01 17:00:00 +0000 ** //第二次尝试
  **出现警报**
  **文件存在! **
  ** requestDone **
  ** Loader isBeingPresented = false **
  ** Loader isBeingDismissed1 = false **
  ** Loader isBeingDismissed2 = false **
  **加载程序已关闭**

1 个答案:

答案 0 :(得分:0)

这是您应该如何完成补全的块:

1)viewDidLoad调用controller.start() 2)主持人通过完成回调调用view.showLoader() 3)在回调中,您启动NetworkController.getfiles() 4)完成NetworkController.getfiles()后,controller.callback调用view.stopLoader()