Hinzufügen von UIBarButtonItem zu UINav Controller..

ich bin mir nicht sicher, was ich hier vermisst. Ich Habe eine benutzerdefinierte UINavigationController und ich bin versucht, fügen Sie eine hartnäckige UIBarButtonItem an der bar.

-(void)viewDidLoad 
{ 
selbst.navigationBar.barStyle = UIBarStyleBlack; 
UIBarButtonItem *bbi = [[UIBarButtonItem alloc] initWithTitle:@"NÖ..." 
Stil:UIBarButtonItemStyleBordered 
Ziel:selbst 
Aktion:@selector(goBack:)]; 
selbst.navigationItem.leftBarButtonItem =bbi; 
[bbi release]; 
} 
-(void)goBack:(id)sender 
{ 
NSLog(@"gehen Sie jetzt zurück"); 
} 

was vermisse ich hier? - BTW, ich will nicht/wird nicht verwenden, IB.

UPDATE:
Dies ist aktuell der nächste, den ich bekommen kann:

-(void)viewDidLoad 
{ 
selbst.navigationBar.barStyle = UIBarStyleBlack; 
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 20, 320, 44)]; 
navBar.barStyle = UIBarStyleBlack; 
UINavigationItem *navItem = [[UINavigationItem alloc] initWithTitle:@"Derzeit Spielen..."]; 
[navBar pushNavigationItem:navItem animated:NO]; 
UIBarButtonItem *editButton = [[UIBarButtonItem alloc] initWithTitle:@"Schließen" - Stil:UIBarButtonItemStyleBordered Ziel:selbst action:@selector(goBack:)]; 
navItem.rightBarButtonItem = editButton; 

[self.view addSubview:navBar]; 

[editButton release]; 
[navItem release]; 
[navBar release]; 
[super viewDidLoad]; 
} 

Es ist furchtbar, ich hinzufügen, eine ganze navbar zu einem UINavigationController bereits eine Navigationsleiste....wenn ich versuche, die vorhandenen, bekomme ich diesen Fehler:

'NSInternalInconsistencyException', reason: 'Nicht aufrufen kann, pushNavigationItem:animiert: direkt auf eine UINavigationBar verwaltet, die von einem controller.' 

....wirklich???

also, was passiert? Sehen Sie Ihre UINavigationController aber es hat nicht die benutzerdefinierte bar Buttons? Sie brechen in der oben beschriebenen Methode und es nicht genannt? Sie trat durch Sie und nicht von der Objekt-Referenzen sind null? Sie trat durch die Methode, die diese Methode aufruft, und Sie können sehen, dass die navigation bar ist ordnungsgemäß installiert?
Der debugger zeigt, dass es in der Tat dort, aber das eigentliche display hat nichts. Für was es Wert ist, der Balken ist schwarz, wie erklärt.
Setzen Sie Ihre top-code in Ihrem root-view-controller, nicht in Ihrem UINavigationController. Auch der Grund für Ihre Fehler im zweiten Fall ist, dass Sie don ' T drücken Sie die navigationssteuerung, bars wie. Wenn Sie mit der navigation-Controller, drücken Sie neue Sicht-Controller auf dem Navigations-Controller-stack. Diese neuen view-Controller dann das anpassen der Navigations-Elemente wie nötig.
also, wenn ich wollte, um die Wiederverwendung dieser Brauch UINavigationController, jedes mal, wenn ich es, ich habe Sie zum zurücksetzen der Navigationsleiste und die Schaltfläche mit dem root-controller? Das klingt verrückt beschäftigt. Ich würde bevorzugen, dass ich nicht daran denken müssen, jedes mal, und haben es automatisch als Teil der einzigartigen Natur, die benutzerdefinierte Klasse. Es gibt keinen Weg, um diese Logik in die Klasse?
In der Regel Sie nicht eine Unterklasse der UINavigationController. Stattdessen erstellen Sie Ihre eigene Unterklasse von UIViewController und verwenden Sie es als root-view-controller beim erstellen der UINavigationController. Alle Anpassung geht dann in Ihre benutzerdefinierte UIViewController.

InformationsquelleAutor mlecho | 2010-03-26

Schreibe einen Kommentar