我有一个 Swift 4 ios 应用程序,按下按钮时会显示随机消息和照片。这工作正常,但我想创建一个无限循环来在按下按钮时显示随机消息/照片。我尝试了多种方法来实现这一目标,但没有一个有效。在主线程完成之前,标签和图像视图似乎不会更新。下面是我目前尝试的方法,这甚至不是无限循环,但仍然存在相同的问题。打印语句显示在调试窗口中,但标签和图像视图从未更新。
@IBAction func loveButtonPressed(_ sender: UIButton) {
nextNote()
}
func nextNote() {
for number in 1...1000 {
print("number is \(number)")
randomPhoto = Int(arc4random_uniform(18))
if randomPhoto == lastRandomPhoto {
randomPhoto = Int(arc4random_uniform(18))
}
photoDisplay.image = UIImage(named: photoArray[randomPhoto])
lastRandomPhoto = randomPhoto
randomNum = Int(arc4random_uniform(14))
if randomNum == lastRandomNum {
randomNum = Int(arc4random_uniform(14))
}
loveNote.text = msgArray[randomNum]
lastRandomNum = randomNum
print("end of loop before sleep")
sleep(6)
print("end of sleep")
}
}
你可以使用Timer
反而...
var timer: Timer!
func nextNote() {
self.timer = Timer.scheduledTimer(timeInterval: 6.0, target: self, selector: #selector(self.setPhoto), userInfo: nil, repeats: true)
}
@objc func setPhoto() {
randomPhoto = Int(arc4random_uniform(18))
if randomPhoto == lastRandomPhoto {
randomPhoto = Int(arc4random_uniform(18))
}
photoDisplay.image = UIImage(named: photoArray[randomPhoto])
lastRandomPhoto = randomPhoto
randomNum = Int(arc4random_uniform(14))
if randomNum == lastRandomNum {
randomNum = Int(arc4random_uniform(14))
}
loveNote.text = msgArray[randomNum]
lastRandomNum = randomNum
}
func somethingToEndTheLoop() {
self.timer.invalidate()
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)