2011-04-20 10 views
6

Widzę, że zadawano podobne pytanie: How to add a right button to a UINavigationController? (między innymi), ale nie do końca to, czego szukam i oni nie rozwiązują mojego problemu.Dodawanie prawego przycisku "wykonano" (UIBarButtonItem) do kontrolera UINavigationController

Zasadniczo stworzyłem UIViewController o nazwie WebViewViewController z UIWebView na nim, który będzie wyświetlany przy użyciu presentModalViewController. Zasadniczo jest to mini przeglądarka internetowa do wyświetlania strony internetowej, przy jednoczesnym utrzymaniu użytkownika w aplikacji, zamiast uruchamiania Safari.

ViewController wykonuje następujące czynności, aby go pokazać ... a przycisk "done" ma na celu zapewnienie miejsca do zamknięcia przeglądarki.

-(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]; 
} 

Niestety przycisk "gotowe" nie pokazuje .. żadnych pomysłów, w których źle się dzieje?

Odpowiedz

6

Może szukasz czegoś więcej tak:

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

Hmm .. To samo. Myślę, że jest coś większego, czego mi brakuje. Przejmuję się przez http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/NavigationControllers/NavigationControllers.html, ale nie widzę mojego rozwiązania. – JMattos

10

Spróbuj z poniżej

-(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

Wiele Wielkie dzięki. kluczem, jak myślałem, był mój brak zrozumienia. – JMattos

+4

Kluczem było to, że dany element nawigacyjny jest atrybutem głównego kontrolera, a nie kontrolera navigationController! Poprawnie: 'rootController.navigationItem.rightBarButtonItem = doneButton;' nieprawidłowy: '[navigationController.navigationItem setRightBarButtonItem: doneButton animowany: YES];' – JMattos

+0

@JMattos: szczęśliwy widząc to pomóc .. – Jhaliya

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

Tylko ten jeden wiersz kodu wyświetlany przycisk dla mnie zrobił.

Powiązane problemy