【发布时间】:2021-10-17 21:18:51
【问题描述】:
@IBOutlet weak var Input: UITextField!
@IBOutlet weak var Heads: UILabel!
@IBOutlet weak var working: UIActivityIndicatorView!
@IBAction func Toss(_ sender: Any) {
DispatchQueue.global().sync {
//set up variables and method
var input = 0
func integer(from textField: UITextField) -> Int {
guard let text = textField.text, let number = Int(text) else {
return 0
}
return number
}
var runningTotal = 0
//collect input
input = integer(from: Input)
//start loading symbol
DispatchQueue.main.async() { [self] in
working.startAnimating()
}
//do math
for _ in 0..<input {
let currentTrial = Int.random(in: 0...1)
if(currentTrial == 1) {
runningTotal += 1
}
}
DispatchQueue.main.async { [self] in
//set output
Heads.text = String(runningTotal)
//stop loading symbol
working.stopAnimating()
}
}
}
此程序计算进行 x 次掷硬币时翻转的正面数(由用户指定)。我的活动微调器根本不显示,即使它设置为在动画时出现。任何帮助将不胜感激!
【问题讨论】:
-
尝试使用
DispatchQueue.global(qos: .userInitiated).async {而不是DispatchQueue.global().sync {。另外,在启动后台进程之前,从主线程中的文本字段中获取 int 值,启动指示器动画
标签: swift grand-central-dispatch uiactivityindicatorview dispatch-queue