2011-04-20 19 views
6

Veo que una pregunta similar fue hecha aquí: How to add a right button to a UINavigationController? (entre otros) pero no es exactamente lo que estoy buscando hacer y ellos no resuelven mi problema.Agregando un botón derecho "hecho" (UIBarButtonItem) a un UINavigationController

Esencialmente, he creado un UIViewController llamado WebViewViewController con un UIWebView que se mostrará con presentModalViewController. Esencialmente es un mini navegador web para mostrar una página web mientras se mantiene al usuario en la aplicación en lugar de ejecutar Safari.

viewController hace lo siguiente para que se muestre ... y el botón "acabado" está destinado a proporcionar un lugar para cerrar el navegador.

-(IBAction)visitFacebook { 
    WebViewViewController *rootController = [[WebViewViewController alloc] init]; 
    rootController.webURL = @"http://www.facebook.com/"; 
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootController]; 
    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc ] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(done:)]; 

    [navigationController.navigationItem setRightBarButtonItem:doneButton animated:YES]; 
    [navigationController.navigationItem setTitle:@"Facebook"]; 

    if (rootController) { 
     [self presentModalViewController:navigationController animated:YES]; 
    } 

    [doneButton release]; 
    [rootController release]; 
} 

Lamentablemente, el botón "hecho" no muestra ... ninguna idea de dónde estoy yendo mal?

Respuesta

6

Tal vez usted está buscando algo más como esto:

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" 
             style:UIBarButtonItemStyleDone target:self 
            action:@selector(dismissModalViewControllerAnimated:)]; 
+0

Hmm .. Lo mismo. Creo que me falta algo más grande. Estoy vadeando http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/NavigationControllers/NavigationControllers.html pero no estoy viendo mi solución. – JMattos

10

Pruebe con más adelante

-(IBAction)visitFacebook{ 
WebViewViewController *rootController = [[WebViewViewController alloc] init]; 
rootController.webURL = @"http://www.facebook.com/"; 
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootController]; 
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc ] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(done:)]; 

rootController.navigationItem.rightBarButtonItem = anotherButton; 

[navigationController.navigationItem setTitle:@"Facebook"]; 

if (rootController) { 
    [self presentModalViewController:navigationController animated:YES]; 
} 

[doneButton release]; 
[rootController release]; 

} 
+0

Muchas Muchas gracias. la clave era, como pensé, mi falta de comprensión. – JMattos

+4

¡La clave era que el elemento de navegación en cuestión es un atributo del controlador raíz, no del navegadorController! correcta: 'rootController.navigationItem.rightBarButtonItem = DoneButton;' incorrecta: '[navigationController.navigationItem setRightBarButtonItem: DoneButton animada: SÍ];' – JMattos

+0

@JMattos: Felices para ver que le ayude .. – Jhaliya

5
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Done" 
     style:UIBarButtonItemStylePlain target:self action:@selector(done:)]; 

Sólo este código de una línea muestra el botón hecho por mí.

Cuestiones relacionadas