2012-09-04 22 views
10

Estoy tratando de crear una lista de elementos que se pueden editar. Algo como esto:¿Cómo cambiar el texto de un BarButtonItem en la barra de navegación?

enter image description here

Con ese fin, he añadido un navigationbar a la parte superior de la vista, y luego añadió 2 botón de la barra Los productos en diseñador de XCode. Establecí el identificador para el botón de la izquierda para Agregar, para el botón de la derecha para Editar.

Cuando hago clic en Editar, deseo cambiar el texto a Hecho. Lo intenté de varias maneras, p. btnEdit.Title = "Done", pero simplemente no lo hace.

He visto varias publicaciones de blog que recomiendan .SetTitle, pero UIButtonBarItem no tiene ese método (al menos en MonoTouch).

Entonces, ¿cómo puedo cambiar el título del botón Editar?

Respuesta

14

Lo resolví. La clave era establecer el identificador del botón Editar en un valor del sistema (por ejemplo, UIBarButtonSystemItemEdit) y no se puede cambiar el texto de esos (tiene sentido ahora). Cambié el identificador de nuevo a Personalizar y configuración. El título funcionó bien. .

+0

Muy útil.Gracias :) –

+0

Godddd Me quedé atrapado en esto por un tiempo vergonzosamente largo ... ¡¡Gracias !! –

4

Funciona para mí como UIBarButtonItem * btnEdit; es miembro de la clase en .h;

btnEdit = [[UIBarButtonItem alloc]initWithTitle:@"Edit" style:UIBarButtonItemStyleBordered target:self action:@selector(btnEditClicked)]; 
self.navigationItem.leftBarButtonItem = btnEdit; 
//[btnEdit release]; 

Ahora selector de llamada sería:

-(void)btnEditClicked 
{ 
    if([btnEdit.title isEqualToString:@"Edit"]) 
    { 
    [btnEdit setTitle:@"Done"]; 
    } 
    else 
    { 
    [btnEdit setTitle:@"Edit"]; 
    } 
} 
8

Por qué no tratas de cambiar la propiedad navigationItem.rightbarButtonItem?

1. la creación de dos botones, uno para editar y otro para hacer

UIBarButtonItem*editButton=[[UIBarButtonItem alloc] initWithTitle:@"Edit" style:UIBarButtonItemStylePlain target:self action:@selector(editAction)]; 

UIBarButtonItem*doneButton=[[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(doneAction)]; 

2. y donde sea necesario, en editAction preferiblemente cambiar el rightBarButtonItem como:

self.navigationItem.rightBarButtonItem=doneButton; 

Y si necesita editButton volver

self.navigationItem.rightBarButtonItem=editButton; 
+0

al cambiar 'rightBarButtonItem', por alguna razón, las acciones unidas a los dos botones no están funcionando. –

5
if ([self.navigationItem.rightBarButtonItem.title isEqualToString:@"Edit"]) 
{ 
    self.navigationItem.rightBarButtonItem.title= @"Done"; 
} 

Espero que esto ayude. feliz codificación :)

+3

no se puede usar == para comparar cadenas. debe utilizar isEqu alToString: en cambio. – rdelmar

+0

por favor acepte la respuesta si la ayudó, a fin de guiar a otras personas que tienen el mismo problema. Gracias. –

1

arrastre de control de botón de la barra de archivos (utilizando el editor asistente), crear salida (en este caso, se llama "barButton" A continuación, añadir lo siguiente:

Swift 3.0:

self.barButton.title = "New title" 
0

Re -New el botón de abajo..

self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "title", style: UIBarButtonItemStyle.plain, target: self, action: #selector(actionMethod)) 
Cuestiones relacionadas