2009-02-19 13 views
26

He creado una nueva aplicación de iPhone basada en navegación. Agregué esto al RootViewController.Agregar botón izquierdo a UINavigationBar (iPhone)

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] init]; 
self.navigationItem.leftBarButtonItem = addButton; 
self.navigationItem.leftBarButtonItem.enabled = YES; 
} 

Sin embargo, no se visualiza el botón de la izquierda. ¿Hay algo que deba hacer?

Respuesta

53

No define qué hace realmente el botón. Esta es una línea de mi aplicación:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelEdit:)]; 

cancelEdit:, el selector, se encuentra en la clase actual (auto) y se define como:

- (void) cancelEdit: (id) sender; 
+1

Impresionante, gracias. ¿Dónde encuentras los diferentes selectores disponibles? El documento es muy vago sobre esto. Definí un método de instancia y lo puse como selector, pero nunca se ejecutó. Me gustaría deslizar en una vista detallada cuando se hace clic en el botón. – 4thSpace

+1

El selector se define en la clase (lo he agregado a mi respuesta). –

+0

También descubrí cómo hacerlo a través de IB. Se agrega como elemento de navegación pero no a través de RootViewController.xib donde está la vista de tabla. Tiene que ser agregado a MainWindow.xib. – 4thSpace

11

En esta pregunta: ¿

Impresionante, gracias. ¿Dónde encuentra los varios selectores disponibles? El documento es muy vago sobre esto. Definí un método de instancia y lo puse como el selector pero nunca se ejecutó. Me gustaría deslizar en una vista de detalle cuando se hace clic en el botón . - 4thSpace febrero 19 a las 16:19

que ir al lugar donde necesito más información y pulse la tecla Escape (Esc). Por lo tanto, en este ejemplo:

...(beginning of line)... @selector(Place Cursor Here, press Esc) ...

Aparecerá una lista de los selectores disponibles. Para los programadores de Microsoft, esto es como Intellisense, pero tienes que pedirlo con Esc (simplemente no aparece automáticamente como en Visual Studio). Hablando en términos prácticos, XCode crea la mayoría de lo que intenta crear cuando comienza a escribir y realmente ayuda cuando se da cuenta de que la tecla Tab es su amiga. (Bueno ... es mi amigo ... tener la vida solitaria que tengo)

Ahora, si usted necesita su propio selector, puede poner su etiqueta de allí (mySelector: por ejemplo), entonces , más abajo en su código, construirlo:

- (IBAction)mySelector:(id)sender {
NSLog(@"You touched me THERE!");
}

Además, en el archivo de cabecera (.h), asegúrese de poner la correspondiente:

-(IBAction) mySelector:(id)sender;

+0

¡Gracias por la sugerencia clave de escape! Me preguntaba sobre eso. :) – Helephant

+0

BTW - Control-coma presentará una lista por la que puede desplazarse. – mobibob

+0

No importa - ¡Acabo de probar el ESC y es lo mismo que mi coma de control y mucho * más fácil de golpear rápidamente! Tu comentario es mejor ... :) – mobibob

13

En realidad, hay otra respuesta, que no aparece aquí, pero que podría ser muy útil en muchos casos. Si do not want to use UINavigationController, entonces self.navigationItem no es una opción para usted.

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"imageName"] style:UIBarButtonItemStyleBordered target:self action:@selector(action:)]; 
UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@"Bar Title"]; 
navigationItem.leftBarButtonItem = barButton; 
[navigationBar pushNavigationItem:navigationItem animated:NO]; 

Es posible que desee que al crear UIViewController ligero, con bar y botones, pero no quieren por encima de navegación.

Cuestiones relacionadas