Gewusst wie: übergeben Sie als argument in @selector?
Wie kann ich passiere ein argument in der @selector
für meinen code unten?
[thisIconBtn addTarget:self action:@selector(changeIconState) forControlEvents:UIControlEventTouchUpInside];
-(void)changeIconState:(UITableViewCell*)thisCell
{
//do something
}
- Es gibt einen Weg, können Sie einen Selektor mit mehreren Argumenten, und diese Frage war schon beantwortet... man kann es Lesen here
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste, der Doppelpunkt ist Teil der Wähler:
@selector(changeIconState:)
.Zweite, Aktionen sind Methoden, die einen bestimmten Satz von Parametern — Sie können nicht einfach eine Methode als eine Aktion. In der Regel, Aktionen wie folgt Aussehen:
wo sender ist ein Zeiger auf das Objekt, das senden die Aktion. In Ihrem code, wenn thisIconButton getappt, die Taste würde den Absender übergeben werden.
-changeIconState:
Methode.Wenn Sie möchten, dass die Zelle, zu der die Taste gehört, bekommen Sie es mit
button.superview.superview
aber ich glaube nicht, dass Sie ändern können Sie die Argumente der Gegner Methoden zur Steuerung von Ereignissen.Einer der häufigsten Gründe für den Versuch zum senden von Daten durch ein Selektor ist, wenn Sie eine benutzerdefinierte Schaltfläche in einer UITableViewCell.
Matthias Bauch eine ausgezeichnete code-Beispiel, wie man die indexPath durch einen Blick in die Zelle auf den Absender in eine Verwandte post. Sehen https://stackoverflow.com/a/5690329/654870.