使用我的第一个秒表应用程序。
我目前有一个播放按钮,暂停按钮和停止按钮。
我想结合播放和暂停按钮,以便它们来回切换。
我的代码如下所示:
var timer = NSTimer()
var count = 0
func updateTime() {
count++
time.text = "\(count)"
}
@IBAction func pauseButton(sender: AnyObject) {
timer.invalidate()
}
@IBOutlet weak var time: UILabel!
@IBAction func stopButton(sender: AnyObject) {
timer.invalidate()
count = 0
time.text = "0"
}
@IBAction func playButton(sender: AnyObject) {
timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("updateTime"), userInfo: nil, repeats: true)
}
感谢任何帮助。
答案 0 :(得分:1)
尝试添加布尔值。请参阅下面的代码。
@IBOutlet weak var label: UILabel!
var time = NSTimer()
var count = 0
var running = false
func result (){
count++
label.text = String(count)
println(count)
}
@IBAction func playpause(sender: AnyObject) {
if running == false {
time = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("result"), userInfo: nil, repeats: true)
running = true }
else {
time.invalidate()
running = false
}
}
希望这有帮助!
答案 1 :(得分:0)
你有一个绑定到按钮的变量,如下所示:
@IBOutlet var thePlayPauseButton : UIButton!
此按钮将与某些操作相关联:
@IBAction func togglePlayPauseButton (button: UIButton) {
// If we are 'paused', then play:
if button.titleLabel!.text == "Pause" {
button.titleLabel!.text = "Play"
// do actual play ...
timer = NSTimer.scheduledTimerWithTimeInterval (1,
target: self,
selector: Selector("updateTime"),
userInfo: nil,
repeats: true)
}
else if button.titleLabel!.text == "Play" {
button.titleLabel!.text = "Pause"
// do actual pause ...
timer.invalidate()
}
else { /* error */ }
}
当然,从结构上讲,您可以使用switch//case
,并且可以通过调用预先存在的pause
和play
方法来执行切换行为。
答案 2 :(得分:0)
我知道这篇文章有点陈旧,但我正在处理同样的问题,我想出了一个稍微不同的答案,想分享它以帮助别人。这是我在切换暂停和播放按钮时想出的。
class ViewController: UIViewController {
var time = NSTimer()
var seconds = 0
var running = false
func timer() {
seconds++
timeLabel.text = "\(seconds)"
}
func playing() {
time = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("timer"), userInfo: nil, repeats: true)
running = true
}
func pausing() {
time.invalidate()
running = false
}
@IBOutlet weak var timeLabel: UILabel!
@IBAction func stopButton(sender: AnyObject) {
time.invalidate()
seconds = 0
timeLabel.text = "0"
}
@IBAction func pausePlayToggleButton(sender: AnyObject) {
if running == false {
return playing()
} else {
return pausing()
}
}
我有一个暂停和播放按钮,我基本上把它们的效果放在函数中并将它们用作单个按钮的返回值。