随着进度条的进展更新按钮
Updating Button as Progress Bar progresses
我正在尝试更新标记为 "Order Safety Escort" 的按钮以在加载进度条时更改其措辞。进度条已经连接到按钮并且工作正常。但是,措辞没有更新。
class SEController: UIViewController {
@IBOutlet weak var requestBtn: UIButton!
@IBOutlet weak var progressBar: UIProgressView!
var progressValue: Float = 0
override func viewDidLoad() {
super.viewDidLoad()
requestBtn.layer.cornerRadius = 5
requestBtn.clipsToBounds = true
}
@IBAction func request(_ sender: Any) {
Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(updateProgress), userInfo: nil, repeats: true)
if (progressValue == 2) {
requestBtn.setTitle("Ording Safety Escort", for:[])
} else if (progressValue == 4) {
requestBtn.setTitle("Sending Current Location", for:[])
} else if (progressValue == 6) {
requestBtn.setTitle("Current Location Recieved", for:[])
} else if (progressValue == 8) {
requestBtn.setTitle("Safety Escort In Route", for:[])
}
}
@objc func updateProgress() {
progressValue += 0.01/9
progressBar.progress = progressValue
}
}
您的 if/else
块需要在 updateProgress
内,而不是在 request
.
内
另请注意,即使代码位置正确,由于浮点数学问题,您的消息也可能不会显示。您正在用一个小的十进制值递增 progressValue
,它可能永远不会完全等于 2、4、6 或 8。您可能会得到 1.999999,然后是 2.0011111 或类似的东西。
所以你可能想要这样的东西:
if progressValue - 2 < 0.0011 {
} else if ...
请注意,在 Swift 和 if
中不需要括号。
我正在尝试更新标记为 "Order Safety Escort" 的按钮以在加载进度条时更改其措辞。进度条已经连接到按钮并且工作正常。但是,措辞没有更新。
class SEController: UIViewController {
@IBOutlet weak var requestBtn: UIButton!
@IBOutlet weak var progressBar: UIProgressView!
var progressValue: Float = 0
override func viewDidLoad() {
super.viewDidLoad()
requestBtn.layer.cornerRadius = 5
requestBtn.clipsToBounds = true
}
@IBAction func request(_ sender: Any) {
Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(updateProgress), userInfo: nil, repeats: true)
if (progressValue == 2) {
requestBtn.setTitle("Ording Safety Escort", for:[])
} else if (progressValue == 4) {
requestBtn.setTitle("Sending Current Location", for:[])
} else if (progressValue == 6) {
requestBtn.setTitle("Current Location Recieved", for:[])
} else if (progressValue == 8) {
requestBtn.setTitle("Safety Escort In Route", for:[])
}
}
@objc func updateProgress() {
progressValue += 0.01/9
progressBar.progress = progressValue
}
}
您的 if/else
块需要在 updateProgress
内,而不是在 request
.
另请注意,即使代码位置正确,由于浮点数学问题,您的消息也可能不会显示。您正在用一个小的十进制值递增 progressValue
,它可能永远不会完全等于 2、4、6 或 8。您可能会得到 1.999999,然后是 2.0011111 或类似的东西。
所以你可能想要这样的东西:
if progressValue - 2 < 0.0011 {
} else if ...
请注意,在 Swift 和 if
中不需要括号。