在向服务器发出请求之前,我会显示加载程序。收到答案后,将调用停止加载程序的功能。
第一次运行正常。但是,当您重新进入页面时,加载器不会关闭,并且会永远旋转。 (我认为这是因为请求已经更快地进行了,并且没有明显的延迟)。
为清楚起见,我在代码中添加了标记。
请告诉我问题出在哪里,如何解决?
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 **
**加载程序已关闭**
答案 0 :(得分:0)
这是您应该如何完成补全的块:
1)viewDidLoad调用controller.start()
2)主持人通过完成回调调用view.showLoader()
3)在回调中,您启动NetworkController.getfiles()
4)完成NetworkController.getfiles()后,controller.callback
调用view.stopLoader()