J'essaie de créer une étiquette avec Swift qui sera mise à jour toutes les secondes. J'ai essayé pendant quelques heures (j'ai commencé récemment avec Swift) mais je n'ai pas été capable de le compléter. J'ai lu de la documentation et j'ai regardé les réponses des autres. , Je Jusqu'à présent ceci:Mettre à jour l'étiquette qui montre l'heure actuelle dans chaque seconde dans Swift 3
import Cocoa
class ViewController: NSViewController {
@IBOutlet weak var timeLabel: NSTextField!
var timer = Timer()
let date = Date()
let calendar = Calendar.current
let dateFormatter = DateFormatter()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
dateFormatter.dateStyle = .none
dateFormatter.timeStyle = .medium
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateTimeLabel), userInfo: nil, repeats: true);
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
func updateTimeLabel() {
timeLabel.stringValue = dateFormatter.string(from: date)
}
}
donc ce que cela fait est qu'il met à jour l'étiquette de temps - mais une seule fois - et c'est lorsque la charge de la vue. Bien que j'ai ajouté un Timer
dans la fonction viewDidLoad
, avec un intervalle de 1 seconde, l'étiquette reste statique.
Quelqu'un pourrait me signaler ce que je fais mal ici?
Wow, belle prise! Je ne peux pas croire que je passais tellement de temps sur une si simple erreur. Je vous ai mis à jour, mais il ne sera pas visible tant que je n'aurai pas 15 réputation. – zec