我试图学习如何编写和处理我的第一个应用程序。这是一些健身房应用程序。我希望在按下按钮后可以更改计时器和标签。 这是我的代码,直到现在,但我无法弄清楚如何在按下按钮后显示下一个标签和下一个倒计时器。
class _daysday1ViewController: UIViewController {
@IBOutlet weak var exerciseNameLabel: UILabel!
@IBOutlet weak var btnStart: UIButton!
@IBOutlet weak var exercisePicture: UIImageView!
@IBOutlet weak var exerciseDescriptionLabel: UILabel!
@IBOutlet weak var timerLabel: UILabel!
@IBAction func nextButtonTapped(sender: AnyObject) {
var timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
count = countList[0]
}
var exerciseIndex = 0
var exerciseList = ["12 reps at 80% of capicity" , " 10 reps at 90%" , "7 to 10 reps at full capacity"]
var countList = [4 , 6 ,8]
var count = 1
override func viewDidLoad() {
super.viewDidLoad()
}
func update() {
if(count >= 0) {
timerLabel.text = String(count--)
self.btnStart.enabled = false
return
}
btnStart.enabled = true
exerciseDescriptionLabel.text = exerciseList[0]
}
`
答案 0 :(得分:1)
您的计时器几乎会在创建时立即消失,因为您在nextButtonTapped函数中声明了计时器var。该功能快速完成,计时器结束时计时器消失。
要解决此问题,请在类级别声明timer var,即声明count var的相同位置,如下所示:
unittest.TestCase
将其声明为可选(?)允许它为零,直到点击下一个按钮。
要创建它,只需将nextButtonTapped中的代码行更改为以此开头:
CommonRuleWhenTestsMixin
而不是:
var timer: NSTimer?
答案 1 :(得分:0)
在func nextButtonTapped()
方法中,您可以包含此代码。 @IBAction将在每次触摸按钮时触发此方法,因此如果您需要使用此操作更改变量,请简单概述要在{};
例如:
var currentExercise = 0
@IBAction func nextButtonTapped() {
btnStart.textLabel.text = "New Text To Display"
currentExercise += 1
exerciseDescriptionLabel.text = exerciseList[currentExercise]
}