如何在Swift中将播放按钮切换为暂停按钮?

时间:2015-03-28 16:17:24

标签: swift

使用我的第一个秒表应用程序。

我目前有一个播放按钮,暂停按钮和停止按钮。

我想结合播放和暂停按钮,以便它们来回切换。

我的代码如下所示:

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)


}

感谢任何帮助。

3 个答案:

答案 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,并且可以通过调用预先存在的pauseplay方法来执行切换行为。

答案 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()
    }
}

我有一个暂停和播放按钮,我基本上把它们的效果放在函数中并将它们用作单个按钮的返回值。