2017-09-21 8 views
0

Ich habe eine benutzerdefinierte Zelle erstellt, in der ich einen Knopf habe. Ich möchte die Farbe der Zelle ändern, wenn ich auf diese Schaltfläche klicke (nicht auf didSelect row). Ich habe den Knopf in der Cellforrow-Methode gegeben und die selector-Methode aufgerufen.Wie bekomme ich ein Zellobjekt, wenn ich auf eine benutzerdefinierte Zelle klicke?

btnCell.tag = indexPath.row 
btnCell.addTarget(self, action: #selector(buttonClicked(sender:)),for: .touchUpInside) 


func buttonClicked(sender:UIButton) { 
//how can i change cell color on button this click 
} 

Wie kann ich Zellobjekt in Button-Aktion erstellen und Zellenfarbe ändern? Antwort in objective-c auch willkommen.

+0

Verschiedene Lösungen hier: https://stackoverflow.com/questions/ 28659845/swift-how-to-die-indexpath-row-wenn-ein-Knopf-in-einer-Zelle-getappt und hier: https://stackoverflow.com/questions/29913066/how-to- access-the-content-einer-custom-cell-in-swift-using-button-tag und hier: https://stackoverflow.com/questions/39585638/get-indexpath-ofuitableviewcell-on-click- von Knopf-von-Zelle. –

Antwort

0

Sie könnten ein benutzerdefiniertes Objekt für Ihre Schaltfläche erstellen, in dem Sie ein Attribut zum Speichern des Index der Zelle haben, in der sich die Schaltfläche befindet.

Diese würden die Schritte sein:

  • Crear eine benutzerdefinierte objet für den Button.
  • Fügen Sie eine Variable hinzu, um den IndexPath Ihrer Zelle zu speichern.
  • In Func CellForRowAtIndexPath legen Sie den Indexpfad jeder Zelle auf die Schaltfläche.
  • Wenn die Schaltfläche angetippt ist, suchen Sie nach dem darin enthaltenen Indexpfad und rufen Sie die Zelle mit Ihrer Tabellenansicht und diesem Index ab.
  • die Farbe Ihrer Zelle ändern

, die den Job tun würde.

0

Diese Antwort ist in schnellen 2.2.I dies getan haben, und arbeitet gut für mich, ich denke, das sollte für Sie arbeiten:

func buttonClicked(sender:UIButton) { 
    { 
     let indexPath = NSIndexPath(forRow: sender.tag, inSection: 0) 
     let cell = self.tableView.cellForRowAtIndexPath(indexPath) 
     cell?.backgroundColor = UIColor.redColor() 
    } 
Verwandte Themen