Dev*_*ode -3 if-statement swift swift3
我认为我对if语句很好,但显然我仍然缺少某些东西.在timer.invalidate()编译器抱怨的行中
永远不会被执行
据我所知,我的语法是正确的.
@IBAction func button(_ sender: Any) {
let timer = Timer.scheduledTimer(timeInterval:0.2 , target: self, selector: #selector(ViewController.imageSwitch) , userInfo: nil, repeats: true)
var buttonState = false
if buttonState == true {
timer.invalidate()
buttonState = false
}
if buttonState == false {
timer.fire()
buttonState = true
}
}
Run Code Online (Sandbox Code Playgroud)
你必须移出方法的声明buttonState.然后简化if条件:
var buttonState = false
@IBAction func button(_ sender: Any) {
let timer = Timer.scheduledTimer(timeInterval:0.2 , target: self, selector: #selector(ViewController.imageSwitch) , userInfo: nil, repeats: true)
if buttonState {
timer.invalidate()
buttonState = false
} else {
timer.fire()
buttonState = true
}
}
Run Code Online (Sandbox Code Playgroud)
你还应该问问自己这些方法甚至应该做什么,你是否希望buttonState不断切换true到false后退,或者你是否希望它做其他事情(比如在延迟后切换到另一个值)?在第一种情况下,你应该在方法之外声明计时器并让它在那里运行,永远不会使它失效 - 在第二种情况下,你应该在else块内移动计时器声明并repeat关闭.在这两种情况下,您应该删除timer.invalidate()和timer.fire()调用.
| 归档时间: |
|
| 查看次数: |
147 次 |
| 最近记录: |