Cómo cambiar el texto del botón de eliminación de uitableview


78

Hola, estoy tratando de cambiar el texto que se muestra en el botón eliminar cuando un usuario desliza una celda de vista uitable dentro de mi vista de tabla.

He visto un ejemplo en otro hilo de preguntas que dice usar este delegado de vista de tabla

- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath

Mi pregunta es, ¿cómo uso este método? No estoy seguro de cómo usarlo.

Respuestas:


198

En su controlador que administra UITableView, debe implementar UITableviewDelegatey devolver el título que desea para su método dentro del titleForDeleteConfirmationButtonForRowAtIndexPathmétodo.

Ejemplo:

@interface CategoryAddViewController : UITableViewController
@end

@implementation CategoryAddViewController
// ...
-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath {
return @"Please don't delete me!";
}

@end

Dejándote con algo así:

ingrese la descripción de la imagen aquí


Genial, pero ¿por qué la apariencia del botón ya no se anima? Después de agregar esto, el botón de eliminar aparece en lugar de ser animado. Editar: Mi culpa, debe haber sido un error de simulación. Después de reiniciar la aplicación, está bien nuevamente.
Maciej Swic

@FaizanS. También estoy investigando esto. ¿No hay forma de simplemente cambiar la propiedad? ¿Algo como ... en self.tableView.deleteButton.name = @"Remove";lugar de anular el método?
Scott

No en el momento de escribir este artículo. En el SDK de iOS, muchas cosas se logran anulando los métodos existentes de las clases de UI base.
Faizan S.

2
el camino rápido:func tableView(tableView: UITableView, titleForDeleteConfirmationButtonForRowAtIndexPath indexPath:NSIndexPath) -> String{ return "Remove Me"; }
datayeah

1
En esta respuesta no hay razón para agregar <UITableViewDelegate>.
rmaddy

31

En Swift es igual, ¡solo la firma del método es diferente!

func tableView(tableView: UITableView, titleForDeleteConfirmationButtonForRowAtIndexPath indexPath: NSIndexPath) -> String? {
  return "Erase"
}

4

Simplemente devuelva la cadena que desea mostrar en lugar de eliminar. Supongamos que desea mostrar "Borrar" para todas las filas, la función anterior debe contener:

return @"Erase";

Leer ESTO

También en su archivo .h, agregue UITableViewDelegate en caso de que su controlador de vista no sea un UITableViewController ya. Es decir, puede ser:

@interface SomeView : UIViewController <UITableViewDelegate>

O

@interface SomeView : UITableViewController

0

Rápido 4.2

override func tableView(_ tableView: UITableView, titleForDeleteConfirmationButtonForRowAt indexPath: IndexPath) -> String? {
        return "Erase"
    }
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.