Ich bin benutzerdefinierte Schaltfläche hinzufügen, um meine UITableViewCell
. In der Aktion dieser Schaltfläche möchte ich Funktion aufrufen und Cell Label in der Methode übergeben. Wie kann ich einen Parameter in dieser showAlert
Methode übergeben: action:@selector(showAlert:)
?action: @selector (showAlert :) Wie übergibt man Parameter in dieser showAlert-Methode?
Antwort
Das ist nicht möglich. Sie haben eine Methode Conforming zu IBAction
- (IBAction)buttonXYClicked:(id)sender;
Bei dieser Methode erstellen Sie erstellen können und die UIAlertView nennen. Vergessen Sie nicht, die Schaltfläche mit der Methode in Interface Builder zu verbinden.
Wenn Sie zwischen mehreren Schaltflächen unterscheiden möchten (z. B. Sie haben einen in jeder Tabellenzelle), können Sie die Tag-Eigenschaft der Schaltfläche festlegen. Und dann überprüfe sender.tag, von welcher Schaltfläche der Klick kommt.
Wenn Sie Button in Tableviewcell verwenden, müssen Sie den einzelnen Zellen einen Tag-Wert hinzufügen und die Methode addTarget mit id als Parameter festlegen.
Beispielcode:
Sie haben in cellForRowAtIndexPath
Methode Unten Code einzugeben.
{
// Set tag to each button
cell.btn1.tag = indexPath.row;
[cell.btn1 setTitle:@"Select" forState:UIControlStateNormal]; // Set title
// Add Target with passing id like this
[cell.btn1 addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
return cell;
}
-(void)btnClick:(id)sender
{
UIButton* btn = (UIButton *) sender;
// here btn is the selected button...
NSLog(@"Button %d is selected",btn.tag);
// Show appropriate alert by tag values
}
Ausgezeichnet !!, schönes Casting !, diese Antwort ist sehr informativ !, danke! – MaKo
Jay Antwort ist groß, aber wenn Sie mehrere Abschnitte wird es nicht funktionieren, da die indexRow local to a section ist.
Eine andere Methode besteht darin, Touch-Ereignisse zu übergeben, wenn Sie in einem TableView mehrere Schaltflächen verwenden.
Wo Sie Ihre Schaltfläche in einem faulen loader erklären:
- (UIButton *)awesomeButton
{
if(_awesomeButton == nil)
{
_awesomeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[_awesomeButton addTarget:self.drugViewController action:@selector(buttonPressed:event:) forControlEvents:UIControlEventTouchUpInside];
}
return _awesomeButton;
}
Der Schlüssel hier ist Ihre Veranstaltungen auf der Auswahlmethode Kette. Sie können keine eigenen Parameter übergeben, aber Sie können die Ereignisse übergeben.
Die Funktion ist die Taste, um süchtig:
- (void)buttonPressed:(id)sender event:(id)event
{
NSSet *touches = [event allTouches];
UITouch *touch = [touches anyObject];
CGPoint currentTouchPosition = [touch locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint: currentTouchPosition];
NSLog(@"Button %d was pressed in section %d",indexPath.row, indexPath.section);
}
Der Schlüssel hier ist die Funktion indexPathForRowAtPoint
. Dies ist eine nette Funktion in UITableView
, die Ihnen den IndexPath an jedem Punkt geben wird. Wichtig ist auch die Funktion locationInView
, da Sie die Berührung im Kontext von tableView benötigen, um den spezifischen indexPath genau zu lokalisieren.
Damit können Sie in einer Tabelle mit mehreren Abschnitten wissen, welcher Knopf es war.
- 1. Wie man den Parameternamen "action" in asp.net übergibt web api
- 2. Wie man normale Parameter in URL in Symfony übergibt?
- 3. Wie übergibt man eine Annotation als Parameter?
- 4. Wie übergibt @selector beim Klicken auf benutzerdefinierte Schaltflächen Daten?
- 5. ICEfaces: Wie man Parameter von einer Seite zur anderen übergibt
- 6. Wie man Parameter von ActionLink zum Controller zur Laufzeit übergibt
- 7. Hinzufügen statischen Parameter zu #Selector in Swift
- 8. Wie übergibt man den Parameter in Batch-Datei?
- 9. Wie übergibt man eine Funktion als Parameter in C?
- 10. Wie man einen Typ als Parameter in Swift übergibt
- 11. Wie übergibt man einen ausführbaren Block als Parameter in Java?
- 12. Wie man einen Parameter zwischen zwei Formen in Axapta übergibt?
- 13. Wie übergibt man den folgenden Parameter? HitTestParameters3D in VisualTreeHelper.HitTest (,,,)?
- 14. Wie übergibt man ein Array als Parameter in Java?
- 15. Cocoa - Wie übergibt man einen Parameter mit der Aktion von NSMenuItem?
- 16. Wie übergebe ich @selector als Parameter?
- 17. Ajax übergibt Array nicht an Controller Action?
- 18. PHP & Codeigniter - Wie übergibt man Parameter an ein Modell?
- 19. Wie übergibt man programmatisch weitere Parameter an Spring SpringApplication?
- 20. Wie übergibt man mehrere Parameter von der Ansicht zum Controller?
- 21. MySQL: Wie übergibt man Parameter von der Kommandozeile?
- 22. Wie übergibt man einen Parameter an eine Unterklasse von BroadcastReceiver?
- 23. Wie man Parameter an eine Versprechen-Funktion übergibt
- 24. Wie man Parameter zu einer Methode durch Reflexion übergibt
- 25. Wie übergibt man einen Block als Parameter einer if-Anweisung?
- 26. jquery animation callback - wie man Parameter an callback übergibt
- 27. Wie übergibt man einen Parameter über DataTable AjaxSource?
- 28. Rails Action Parameter Fehler
- 29. Wie übergibt man einen Parameter an den Handler eines Ereignisses
- 30. Wie übergibt man einen Zeiger auf die Methode als Parameter?
Sie müssen IBAction nicht verwenden. Siehe andere Antworten. –