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.

C.Johns
fuente

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í

Faizan S.
fuente
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"
}
Weles
fuente
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
Bourne
fuente
0

Rápido 4.2

override func tableView(_ tableView: UITableView, titleForDeleteConfirmationButtonForRowAt indexPath: IndexPath) -> String? {
        return "Erase"
    }
Gopal Kohli
fuente