[英]Simple swift Stopwatch don't work
这是我的代码。
//
// ViewController.swift
// Stopwatch
//
// Created by Orkun Atasoy on 12.09.15.
// Copyright (c) 2015 Orkun Atasoy. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var timerLabel: UILabel!
@IBOutlet weak var timerButton: UIButton!
var timer : NSTimer?
var ms = 0
@IBAction func buttonTapped(sender: AnyObject) {
timerButton.setTitle("Stopp", forState:UIControlState.Normal)
self.timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
}
func update() {
self.ms++
timerLabel.text = String(self.ms)enter code here
}
}
问题是当我运行构建时,它会出现带有大文本“ Stopwatch”的内屏,并且就像冻结在那里一样。 但是它应该带有一个标签,按钮的下方带有一个文本“开始”。 当我单击按钮时,它应该开始计数并且标签应更改为“ stopp”。 当我再次单击它应该停止计时器。
我不明白问题主义者。 我是Swift新手。 如果您能帮助我,我会很高兴。
感谢您的关注
编辑>>标签文本位于“ 00:00”的开头。
看来您搞砸了IBOutlet
连接,并且我已经更正了一些代码,这是工作代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var timerLabel: UILabel!
@IBOutlet weak var timerButton: UIButton!
var timer : NSTimer?
var ms = 0
override func viewDidLoad() {
timerLabel.text = "00:00"
}
@IBAction func buttonTapped(sender: AnyObject) {
if timerButton.currentTitle == "Stopp" {
timer?.invalidate()
timerButton.setTitle("Start", forState:UIControlState.Normal)
} else {
timerButton.setTitle("Stopp", forState:UIControlState.Normal)
self.timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
}
}
func update() {
self.ms++
timerLabel.text = String(self.ms)
}
}
首先,从情节提要视图控制器中删除所有插座,并通过以下方式进行连接:
如果您要检查此示例项目。
计时器触发时调用的方法不正确。 从文档中:
选择器应具有以下签名:timerFireMethod :(包括一个冒号,指示该方法接受一个参数)。 计时器将自身作为参数传递,因此该方法将采用以下模式:-(void)timerFireMethod:(NSTimer *)timer
因此,您的方法应为:
func update(timer: NSTimer) {
self.ms++
timerLabel.text = String(self.ms)
}
并且您应该将计时器设置为:
NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: "update:", userInfo: nil, repeats: true)
我还有更多要提及的事情-例如在明确使用变量时不需要使用self
,以及使用调度计时器代替NSTimer,但这至少应解决您的直接问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.