所以我有这个代码:
@IBAction func onStart(_ sender: Any) {
DispatchQueue(label: "SyncQueue").async{
for i in 0..<numberOfItemToDownload {
// download data from the internet this may takes longer depends on the connection speed and data being download
if isCancelled {
DispatchQueue.main.async { // dismiss the progress ViewController (displayed modally) }
break
}
}
}
}
@IBAction func onEnd(_ sender: Any) {
isCancelled = true
}
这可以正常工作,但如果当前正在下载的项目需要更长的时间,那么用户点击“结束”按钮,“进度对话框”在当前项目完成之前不会关闭。这使得“结束”按钮在用户的视角中不起作用。
在 Android 中,我们可以中断 AsyncTask 进程并结束它。在 Swift 中还有另一种方法吗?就像当用户点击“结束”时,该过程应该立即停止并关闭“进度对话框”。