2016-09-13 4 views
0

Ich bin sehr verwirrt.Zugriff auf eine UIButton in einem benutzerdefinierten UITableViewCell

In meiner cellForRowAtIndexPath Methode, Ich versuche, einen UIButton Titel zu setzen:

Problem:

cell?.react?.setTitle("\(currentObject.likes)", forState: UIControlState.Normal) 

wo react eine UIButton ist, das ist ein Subview meiner UITableViewCell Unterklasse.

Ich kann nicht scheinen, den Titel meines UIButton überhaupt zu aktualisieren. Der einzige Weg, die ich gefunden habe, ihn zu ändern durch die UITapGestureRecognizer in meiner UITableViewCell Unterklasse ist,

Arbeits:

func reaction(button : UIButton) { 
    if button.imageView?.image == UIImage(named: "ic_favorite.png") { 
     button.setImage(UIImage(named: "ic_favorite_border.png"), forState: UIControlState.Normal) 
    } else { 
    button.setImage(UIImage(named: "ic_favorite.png"), forState: UIControlState.Normal) 
    } 
} 
+0

ist 'react' ist Ihre Taste? Warum schreibst du, wo reagieren ist eine Unterklasse meiner benutzerdefinierten Zelle? – Tj3n

+0

wo Sie die Aktion der Reaktion –

Antwort

0

eine benutzerdefinierte Zelle erstellen (sagen myCell), fügen Sie die Taste als @IBOutlet, dann geben dies let cell = tableView.dequeueReusableCellWithIdentifier("yourIdentifier", forIndexPath: indexPath) as! myCell.

Ihr Problem Ich denke, dass Sie die Schaltfläche nicht mit der Zelle verknüpft haben & XCode weiß nicht, über welche Schaltfläche Sie sprechen.

+0

erklärt reagieren ist der Name der Schaltfläche! – scott

+0

Okay, das ist nicht ideal, aber es hat funktioniert. Ich habe es einfach durch IB verlinkt und es hat funktioniert. – scott

0

Sie sollten zuerst einen Verweis auf Ihre Zelle mit cellForRowAtIndexPath an Ihre Methode übergeben bekommen.

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("MyCellIdentifier", forIndexPath: indexPath) as! UIButton   
    // do anything with cell 
    return cell 
} 

Denken Sie daran, eine Kennung für die Tabellenansicht Zelle (UITableViewCell) einzustellen.

+0

In Bezug auf die Bearbeitung älterer Beiträge: Bitte bearbeiten Sie keine alten Posts, nur um Dinge wie "Gern geschehen. Bitte sehen Sie:" [Ein Moderator hat mir mitgeteilt, dass meine Bearbeitungen, die nur "Danke" und ähnliche entfernen, entmutigt werden) (http://meta.stackoverflow.com/a/333096/3773011) ". – Makyen

+0

Scheint fair. Danke für das Aufzeigen. – navit

0

// wie diese versuchen, zuerst geben Tag für diese Schaltfläche in Ihre Tabellenzelle

(cell?.contentView.viewWithTag(tag) as? UIButton)?.setTitle("\(currentObject.likes)", forState: UIControlState.Normal) 
Verwandte Themen