2010-08-31 10 views
7

Ich habe einen UIViewController mit einem UITableView und eine UINavigationBar hinzugefügt. Wie kann ich hinzufügen und "bearbeiten" -Taste und eine "+" Taste in dieser Leiste programmgesteuert? (Ich habe versucht, IB zu verwenden, aber der Titel wird immer ersetzt, und andere Elemente werden nicht hinzugefügt) Ich verwende keinen UINavigationController. steht mein UIViewController alleine.Elemente zur Navigationsleiste hinzufügen (UINavigationController wird nicht verwendet)

Das ist, was ich ohne Erfolg versucht:

UIBarButtonItem *barButton = 
    [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonItemStyleBordered 
                target:nil 
                action:nil]; 
UINavigationItem *editItem = [[UINavigationItem alloc] initWithTitle:@"Title"]; 
[editItem setLeftBarButtonItem:barButton animated:YES]; 
[navigationBar setItems:[NSArray arrayWithObject:editItem] animated:YES]; 

Antwort

33

Ihre UIViewController hat eine navigationItem Eigenschaft. Sie können die linken und rechten Leiste Taste, um Elemente mit self.navigationItem.leftBarButtonItem = ... und self.navigationItem.rightBarButtonItem = ...

bearbeiten gesetzt:

OK, nehme ich Sie einen Verweis auf Ihre UINavigationBar haben? Dann denke ich, Sie ein einzelnes UINavigationItem ihm hinzufügen würde:

UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"A Title"]; 
theNavigationBar.items = [NSArray arrayWithObject:item]; 
[item release]; // or keep this as an instance variable 

und dann das Element des linken und rechten Tasten eingestellt:

theNavigationBar.topItem.leftBarButtonItem = ...; 
theNavigationBar.topItem.rightBarButtonItem = ...; 

ich nicht versucht haben, aber ich denke, es sollte Arbeit.

+0

Dies ist der gleiche Ansatz wie VFN richtig? Ich habe nicht gearbeitet. navigationItem soll verwendet werden, wenn UINavigationController verwendet wird, was nicht mein Fall ist. – nacho4d

+0

Ja, es ist der gleiche Ansatz. Ich habe meine Antwort bearbeitet und eine weitere mögliche Lösung hinzugefügt. –

+0

Danke, es hat funktioniert! – nacho4d

1
UIBarButtonItem *leftBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(theEditMethod:)];  
[viewController.navigationItem setLeftBarButtonItem:leftBarButton animated:NO]; 
[leftBarButton release]; 

UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(theAddMethod:)];  
[viewController.navigationItem setLeftBarButtonItem:rightBarButton animated:NO]; 
[rightBarButton release]; 
+0

Ich versuchte dies innerhalb von ViewDidLoad Methode der Controller (und ersetzt ViewController für self) aber nicht funktioniert. ; (. navigationItem soll verwendet werden, wenn UINavigationController verwendet wird, was nicht mein Fall ist.) – nacho4d

+0

Warum wechseln Sie nicht zur Verwendung eines Navigations-Controllers und stellen Sie Ihren View-Controller als Root ein. Es wird Ihnen das Leben leichter machen! – vfn

+0

Weil Erstens möchte ich nicht navigieren und zweitens möchte ich die Breite anpassen, etwas ist mit UINavigationController nicht möglich. Tatsächlich arbeite ich an einer alternativen Art der Navigation, so dass das Ziel nicht darin besteht, UINavigationController zu verwenden. – nacho4d

0

Sie müssen UINavigationItem nicht zur UINavigationBar hinzufügen. Sie können wie folgt vorgehen:

NSString *backButtonTittle=[NSString stringWithFormat:@"< %@",NSLocalizedString(@"backButton", nil)]; 
UIBarButtonItem *backCreateAccountNavBarItem=[[UIBarButtonItem alloc]initWithTitle:backButtonTittle style:UIBarButtonItemStylePlain target:self action:@selector(goToBackStep)]; 
self.createAccountNavBar.topItem.leftBarButtonItem=backCreateAccountNavBarItem; 
0

Verwenden Sie einfach die navigationItem -Eigenschaft von ViewController.

wie folgt aus:

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(updateContent)]; 
Verwandte Themen