Ich habe Probleme beim Verknüpfen mehrerer Schaltflächen mit einem einzelnen Klickereignis mit Swift. Ich habe die Ausgänge zu den Schaltflächen erstellt, das Ziel buttonPressed-Ereignis zu jeder der Schaltflächen hinzugefügt, aber es gibt immer noch einen Fehler, der besagt, dass "unerkannter Selektor an Instanz gesendet" wurde. Ich habe mir viele andere Beispiele und Themen von Menschen mit ähnlichen Problemen angeschaut, aber ich sehe keinen Unterschied darin, was ich tue. Welche Bereiche könnten das beeinflussen? Warum ist es nicht so einfach, wie alle sagen?Swift 4 - Unbekannter Selektor an Instanz gesendet
Hier ist mein Code:
override func viewDidLoad() {
super.viewDidLoad()
addBackground()
btnShoulder.addTarget(self, action: #selector(self.buttonPressed(_:)), for: .touchUpInside)
btnBack.addTarget(self, action: #selector(self.buttonPressed(_:)), for: .touchUpInside)
btnTricep.addTarget(self, action: #selector(self.buttonPressed(_:)), for: .touchUpInside)
btnBicep.addTarget(self, action: #selector(self.buttonPressed(_:)), for: .touchUpInside)
btnChest.addTarget(self, action: #selector(self.buttonPressed(_:)), for: .touchUpInside)
btnLegs.addTarget(self, action: #selector(self.buttonPressed(_:)), for: .touchUpInside)
}
func buttonPressed(_ sender: UIButton)
{
self.performSegue(withIdentifier: "ChooseExercise", sender: sender)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
if(segue.identifier == "ChooseExercise")
{
let senderMirror = sender.customMirror
if senderMirror.subjectType == UIButton.self
{
let buttonID = senderMirror.descendant("tag") as! Int
let category = Exercise.Category(rawValue: buttonID)
jeremyExerciseController.currentExerciseCategory = category
}
}
else
{
preconditionFailure("Unexpected segue identifier")
}
}
Ich erhalte die folgende Fehlermeldung:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Swift4Gains.jeremyExerciseController ShoulderExercise:]: unrecognized selector sent to instance 0x7fb323f426f0'
Der Fehler tritt auf, wenn ich auf eine der Schaltflächen klicken. Ich kann im Stack-Trace keine Zeilennummer sehen, die angibt, auf welcher Linie er gerade auftritt, aber ich gehe davon aus, dass er versucht, die buttonPressed-Methode aufzurufen und zu scheitern. Ich bin sehr neu zu schnell und immer noch nicht den Drehbuch des Debuggers und was nicht.
UPDATE
Dank Michael Hulet war ich in der Lage Ausnahme zu bekommen Breakpoints arbeiten und einige weitere nützliche Daten. Der Haltepunkt wird zu Beginn der AppDelegate geworfen, aber in meinem Breakpoint Navigator Ich habe zwei Ausnahmen:
objc_exception_throw in libobjc.A.dylib
__cxa_throw in libc++abi.dylib
Es ist nicht mir Probleme in meinem eigentlichen Code zu geben, so muss es als etwas weiter sein.
Eine Anleitung wäre erstaunlich, ich habe mich schon eine Weile darum gekümmert. Vielen Dank!
Wenn Sie eine Frage zu einem Fehler stellen, müssen Sie zwei Dinge tun. 1) Fügen Sie die vollständige und genaue Fehlermeldung in Ihre Frage ein, nicht nur einen Teil davon. 2) Zeigen Sie die genaue Codezeile an, die den Fehler verursacht. Bitte aktualisieren Sie Ihre Frage (keine Kommentare) mit diesen zusätzlichen Informationen. – rmaddy
Ich habe meine Frage aktualisiert, um detaillierter zu sein –
Keiner der Code, den Sie in Ihrer Frage geschrieben haben, hat irgendetwas mit diesem Fehler zu tun. – rmaddy