action: @selector (showAlert :) cómo pasar el parámetro en este método showAlert?

UITableViewCell button personalizado a mi UITableViewCell . En la acción de ese button, quiero llamar a showAlert: function y quiero pasar la label de celda en el método.

¿Cómo puedo pasar un parámetro en este método showAlert : action:@selector(showAlert:) ?

Eso no es posible. Tienes que crear un método conforme a IBAction

 - (IBAction)buttonXYClicked:(id)sender; 

En este método puede crear y llamar al UIAlertView. No olvide conectar el button con el método en Interface Builder.

Si desea distinguir entre varios botones (p. Ej., Tiene uno en cada celda de la tabla), puede establecer la propiedad de la label del button. Y luego verifique el remitente.tag desde qué button aparece el clic.

Si está usando Button en Tableviewcell, entonces tiene que agregar valor de label al button de cada celda y establecer el método addTarget con id como parámetro.

Código de muestra:

cellForRowAtIndexPath código siguiente en el método cellForRowAtIndexPath .

 { // 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 } 

La respuesta de Jay es genial, pero si tiene varias secciones, no funcionará ya que indexRow es local en una sección .

Otro método, si usa botones en un TableView que tiene varias secciones, es pasar los events táctiles.

Donde declara su button en un cargador perezoso:

 - (UIButton *)awesomeButton { if(_awesomeButton == nil) { _awesomeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [_awesomeButton addTarget:self.drugViewController action:@selector(buttonPressed:event:) forControlEvents:UIControlEventTouchUpInside]; } return _awesomeButton; } 

La key aquí es encadenar tus events en el método selector. No puede pasar sus propios parameters, pero puede pasar los events.

La function en la que se engancha el button:

 - (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); } 

La key aquí es la function indexPathForRowAtPoint . Esta es una function ingeniosa en UITableView que le proporcionará indexPath en cualquier punto. También es importante la function locationInView porque necesita el toque en el context de tableView para que pueda localizar el indexPath específico.

Esto le permitirá saber qué button era, en una tabla con varias secciones.