2016-05-03 14 views
1

PatientTableViewCell VIEWBTN:]: Unbekannter Selektor an Instanz gesendet 0x7fdde280ac00Crashed wenn Taste auf Tableview Zelle setzen, Unbekannter Selektor

libC++ abi.dylib: mit abgefangene Ausnahme vom Typ endet NSException

Irgendwelche Ideen? Dank

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
{ 
    let current_patient = patients[indexPath.row] 
    let cell = myTable.dequeueReusableCellWithIdentifier("patientCell", forIndexPath: indexPath) as! PatientTableViewCell 
    let type = current_patient.enrollable_type 
    var unique_id = current_patient.unique_id 
    cell.patientTypelbl.text = type 
    cell.patientIDlbl.text = unique_id 
    cell.viewBtn.tag = indexPath.row 
    cell.viewBtn.addTarget(self, action: "viewDetailAction:", forControlEvents: .TouchUpInside) 
    return cell 
} 

    @IBAction func viewDetailAction(sender: UIButton){ 
    print("clicked") 
    self.performSegueWithIdentifier("patientDetailCell", sender: self) 
} 

für patientTableviewcell:

class PatientTableViewCell: UITableViewCell { 

@IBOutlet weak var viewBtn: UIButton! 
@IBOutlet weak var titleType: UILabel! 
@IBOutlet weak var titleID: UILabel! 
@IBOutlet weak var patientTypelbl: UILabel! 
@IBOutlet weak var patientIDlbl: UILabel! 
override func awakeFromNib() { 
    super.awakeFromNib() 
    // Initialization code 
} 

override func setSelected(selected: Bool, animated: Bool) { 
    super.setSelected(selected, animated: animated) 

    // Configure the view for the selected state 
} 

}

+0

Wenn Sie Swift verwenden 2.2, sollten Sie den expliziten '#selector (viewDetailAction)' stattdessen der Zeichenkette '" viewDetailAction: "'. – kennytm

+0

Die Fehlermeldung besagt, dass die Klasse 'PatientTableViewCell' keine Methode oder Funktion' viewBtn' hat – vadian

+0

@vadian Ich habe den Code für patientTableviewcell post. Sollte ich den Button Action Code auf patientTableviewcell setzen? –

Antwort

1
umbenennen

Ihr Fehler war ein IBAction vom xCode Editor zu setzen, und programmatisch eine Auswahl Ziel auf den gleichen Knopf hinzuzufügen ..

Zunächst einmal entfernen Sie Ihre IBAction Einstellung von Referenzierung Outlets wie hier im PICT ure:

enter image description here

Danach können Sie Ihre Funktion durch Entfernen IBAction Tages umbenennen müssen:

func viewDetailAction() {...} 
+1

Bravo !! Danke, Mann. –

0

Eigentlich was @kennytm sagt, ist wahr, aber es ist nur eine Warnung für den Moment, aber am Ende müssen Sie die Syntax verwenden: action : #selector(YourViewController.yourFunctionName). Ihr Problem ist, dass Sie zu Ihrem viewBtn ein Ziel von viewDetailAction hinzufügen, aber das muss eine Funktion und keine Aktion aus dem Storyboard sein.

können Sie erklären, gerade diese Funktion:

func viewDetailAction() { 
    print("clicked") 
    self.performSegueWithIdentifier("patientDetailCell", sender: self) 
} 

und löschen Sie Ihre Aktion:

@IBAction func viewDetailAction(sender: UIButton){ 
    print("clicked") 
    self.performSegueWithIdentifier("patientDetailCell", sender: self) 
} 
+0

Ich habe versucht, aber immer noch denselben Fehler –

+0

Sie sollten vielleicht die Aktion für die Schaltfläche direkt in Ihrem PatientTableViewCellController aus dem Storyboard festlegen. – Chajmz

0

Sie haben zwei Möglichkeiten, hier

  1. Kommentar die folgende Zeile in der Zelle für Zeilenindex Pfad und überprüfen Sie die Schaltfläche Aktion ist da oder nicht. cell.viewBtn.addTarget (self, Aktion: "viewDetailAction:" forControlEvents: .TouchUpInside)

  2. Gebrauch, was Sie Code erwähnt haben und die Schaltfläche Aktion Methodennamen "@IBAction"

Verwandte Themen