2017-06-22 4 views
0

Ich versuche, einen Benutzer seinen Spielstand zurücksetzen zu lassen (ein einfacher let Wert, der anfänglich 0 ist), aber ich bekomme immer einen Fehler bei der letzten addAction : Wert kann nicht vom Typ '() ->()' umwandeln zu erwarteten Argumenttyp '((UIAlertAction) -> Void)?'@IBAction Erstellungsfehler - Code kann nicht ausgeführt werden, um einen Int-Wert zurückzusetzen

Bitten mir helfen, der Code-Block Hier I genannt:

!
@IBAction func resetScore() { 
    let alertController = UIAlertController(title: "Reset", message: "Are you sure you want to reset your game score? All progress will be lost.", preferredStyle: UIAlertControllerStyle.alert) 

    alertController.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.default, handler: nil)) 

    alertController.addAction(UIAlertAction(title: "Reset", style: UIAlertActionStyle.default, handler: { 
     func resetScore() { 
      let score = 0 
      scoreCounter.text = "Score: " + String(score) 
     } 
    })) 

    present(alertController, animated: true, completion: nil) 
} 

Antwort

0

Es ist, weil diese Schließung einen Parameter erwartet.Sie ​​müssen _ in am Ende schreiben:

alertController.addAction(UIAlertAction(title: "Reset", style: UIAlertActionStyle.default, handler: { _ in 

Außerdem, wenn Sie die resetScore Funktion erwarten aufgerufen werden, wenn die Taste gedrückt wird, dann müssen Sie den Code der folgenden aktualisieren:

alertController.addAction(UIAlertAction(title: "Reset", style: UIAlertActionStyle.default, handler: { _ in 
    let score = 0 
    self.scoreCounter.text = "Score: " + String(score) 
})) 

Auch auf Basis dieser Kern Sie deklarieren eine neue lokale Variable mit der let scope Zeile, was bedeutet, dass Sie nichts zurücksetzen. Ich schätze, dass Sie eine Instanzvariable haben scope genannt, so wird folgendes tun:

self.score = 0 
self.scoreCounter.text = "Score: " + String(score) 
+0

Wenn meine Antwort auf Ihre Frage hilfreich war und Erfüllung, dann bitte sie als Antwort auf Ihre Post akzeptieren gegenüber anderen, um anzuzeigen, Benutzer, die Ihr Problem gelöst hat :) https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – Kumuluzz

Verwandte Themen