gpt4 book ai didi

swift - 有人会解释这个处理 Timer.scheduledTimer(withTimeInterval : repeats: block:{})

转载 作者:行者123 更新时间:2023-11-28 07:30:37 53 4
gpt4 key购买 nike

因此,我首先创建红色标签。

我想创建一个计时器,每秒将颜色更改为深灰色,然后在下一秒恢复为红色。

我想我可以创建一个时间间隔为 1 或 2 秒的计时器,让它重复,并更改 block 内的标签文本颜色。

我收到一条错误消息:

"Instance member 'aLabelThatIsRed' cannot be used on type 'ViewController'"

它不会让我更改标签。为什么?

import UIKit

class ViewController: UIViewController {
@IBOutlet var aLabelThatIsRed: UILabel!

let timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { timer in
let darkGrey = UIColor(displayP3Red: 0.05, green: 0.05, blue: 0.05, alpha: 1.0)
aLabelThatIsRed.textColor = darkGrey
}

最佳答案

您应该将该代码 let timer ... 放在实例的方法中(例如:viewWillAppear)

或更改为:

var timer: Timer {
return Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) {
[weak self] timer in
let darkGrey = UIColor(displayP3Red: 0.05, green: 0.05, blue: 0.05, alpha: 1.0)
self?.aLabelThatIsRed.textColor = darkGrey
}
}

原因是:aLabelThatIsRed 是实例的变量(ViewController 的属性),但在您当前的代码中,它在实例的方法之外使用。它与您调用 ViewController.aLabelThatIsRed 相同,这会导致您遇到相同的错误。执行我的解决方案 1 或 2 会将那个变量放入实例的方法中。

关于swift - 有人会解释这个处理 Timer.scheduledTimer(withTimeInterval : repeats: block:{}),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54820024/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com