2010-04-22 9 views

Respuesta

14

¿Está creando el botón en Interface Builder? Asegúrese de que el identificador esté configurado en Personalizado; de lo contrario, no podrá cambiar el título.

Seleccione la UIBarButtonItem en Interface Builder, abra el inspector (Command + Shift + I), y seleccione "Custom" en el menú desplegable junto a Identifier.

+0

cómo hacer esto en el programa? No utilizo el IB en absoluto, thx. –

+0

¿Su "conjunto a personalizado" significa "initWithCustomView"? Si es así, mi artículo ya estaba configurado en Personalizado. de esta manera: \t porcentaje = [[UILabel alloc] init]; \t percentage.text = @ "HELLO"; \t UIBarButtonItem * percentageBarItem = [[UIBarButtonItem alloc] initWithCustomView: percentage]; Quiero mantenerlo cambiable después de ponerlo en la barra de herramientas. –

+0

lo siento, no sé cómo recuperar el comentario .../_ \ –

0

Creo que mi problema fue similar, pero no idéntico, al suyo: quería que el texto en una barra de herramientas de accesorios reflejara las selecciones del último componente de selector.

I era, sin embargo, no puede cambiar el texto de una UILabel añadió a una UIBarButtonItem que es parte de un inputAccessoryView visualizada sobre un múltiplo-pieza de deslizamiento de UIPickerView para cada uno de varios datos de entrada de UITextFields. Estos elementos se crean mediante programación (Xcode v 4.3 (4E109) ​​), excepto los campos de texto, cada uno de los cuales se crea en el Storyboard y se declara como una propiedad.

Ni asignar el texto a la etiqueta toolbarTitle, y luego alloc/init-ing el elemento botón de la barra con toolbarTitle como una vista personalizada:

toolbarTitle.text = @"myTextFromPickerComponent"; 
UIBarButtonItem *title = [[UIBarButtonItem alloc] initWithCustomView:toolbarTitle]; 

//nor alloc/init-ing the bar button item directly, passing the new text to initWithTitle: 

UIBarButtonItem *title = [[UIBarButtonItem alloc] initWithTitle:toolbarTitle.text style:UIBarButtonItemStyleDone target:self action:nil]; 

dio el comportamiento deseado; es decir, el texto de la etiqueta no cambió, aunque confirmé con NSLog que efectivamente estaba enviando el nuevo texto.

que tiene un toque de la Docs bajo Custom Views for Data Input, Input Views and InputAccessory Views: "El primer nivel de respuesta puede recargar la entrada y puntos de vista de accesorios llamando al método de UIResponderreloadInputViews"

Implementé esto al tener la llamada UITextField actual llamada reloadInputViews, y esto funcionó para mí con cualquiera de los dos fragmentos de código indicados anteriormente.

+0

Gracias por su respuesta: llamando a reloadInputViews. –

7

Prueba esto:

UIBarButtonItem *clearButton = [[UIBarButtonItem alloc] initWithTitle:@"Clear" style:UIBarButtonItemStyleBordered target:self action:@selector(yourMethod:)]; 
+0

Este es perfecto – AndrewSmiley

5
  1. Crear IBOutlet para la UIBarButtonItem, outToMyButton en este ejemplo
  2. sintetizar en .m
  3. outToMyButton.title = [NSString stringWithFormat:@"%i",myInt]; // or any NSString init
3

Cambio del título de UIBarButtonItem Programatically

@interface YourController : UIViewController { 

    UIBarButtonItem *barButton; 

} 

- (void)viewDidLoad 
{ 
barButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Set", @"Set") 
                  style:UIBarButtonItemStylePlain 
                  target:self 
                  action:@selector(barButtonClicked)]; 
} 

En BarButtonItem Acción

-(void)barButtonClicked{ 

if ([barButton.title isEqualToString:@"Set"]) { 

    //Enter Code 

    barButton.title = @"Done" 


}else{ 
    //Enter Code 
    barButton.title = @"Set" 

    } 

} 
Cuestiones relacionadas