Ich bin mir nicht sicher, warum, aber jedes Mal, wenn ich meine Anwendung ausführen, wird mein Timer die Update-Funktion nicht aufrufen. Ich habe alles versucht: #selector verwenden, einen Doppelpunkt am Ende des Updates hinzufügen, nichts funktioniert. Ich habe in meinem Update eine print-Anweisung hinzugefügt, um sicherzustellen, dass sie dort ankommt, und die print-Anweisung druckt nie! Ich bin mir nicht sicher, warum es nicht gerufen wird .... Hilfe! P.S. Ich weiß, dass ausgewählt ist in der Tat eine der Optionen in der if-Anweisung, ich hatte eine Druckanweisung dafür und es funktioniert.Timer ruft nicht Selektor-Funktion
if (selected == "05 seconds") {
count = 5
timer = Timer(timeInterval: 1.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
}
else if (selected == "10 seconds") {
count = 10
timer = Timer(timeInterval: 1.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
}
else if (selected == "20 seconds") {
count = 20
timer = Timer(timeInterval: 1.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
}
else if (selected == "30 seconds") {
print("I'm here!")
count = 30
timer = Timer(timeInterval: 1.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
}
else if (selected == "Single Shot") {
SendButton.isHidden = false
countDownLabel.isHidden = true
}
}
func update() {
print("Now I'm in update!")
count = count - 1;
countDownLabel.text = String(count)
}
Die richtige Methode zur Verwendung von Selektoren in Swift 3 ist auch '#selector (update (_ :))'. Auf diese Weise können Sie den Absender an die Funktion übergeben. – TheValyreanGroup