2013-11-28 7 views
7

meine App ist wie folgt strukturiert: UITabBarController> UINavigationController> ViewControllerOne> ViewControllerTwo. Die UINavigationBar hat unten die Tab-Leiste, jetzt, wenn der Benutzer in die zweite Ansicht Controller navigiert, ich möchte in der Lage sein, die Tab-Leiste ausblenden und ersetzen ist mit einer Symbolleiste. Ich habe versucht, diesen Code:abwechselnd zwischen Symbolleiste/Tab-Leiste

[self.navigationController.tabBarController.tabBar setHidden:YES]; 
[self.navigationController.toolbar setHidden:NO]; 

Wenn ich die App ausführen die Registerkarte ist ausgeblendet, aber die Symbolleiste nicht angezeigt. plus, da der letzte VC ein Tabellenansicht-Controller ist, wenn ich durch die Zellen scrolle, gibt es eine weiße Lücke zwischen der Tabelle und dem unteren Rand der Ansicht. Wie kann ich das beheben?

+0

Wo nennen Sie diese Methode? Ist es viewDidAppear :? wenn nicht versuchen, es dort zu bewegen. – Greg

+0

@Greg ich habe nicht gestellt und ich habe es versucht, aber es hat nicht funktioniert. Ich habe die Werkzeugleiste aus dem Inspektor auf dem zweiten View-Controller aktiviert und ein Element hinzugefügt (auch verbunden mit meiner Klasse). aber es funktioniert nicht. nichts zeigt und es ist immer noch eine weiße Lücke. Danke für die Eingabe. – HusseinB

+0

@Greg okay im Inspektor unter simulierten Metriken, ich habe "show toolbar" jetzt angezeigt, es zeigt aber die Tab-Leiste und Symbolleiste über jeden toher. Ich werde einen Weg finden, das zu beheben. – HusseinB

Antwort

10

das, weil nicht self.tabBarController.view arbeiten, wenn Sie die Tab-Leiste wie verstecken, dass die Subviews nicht richtig eingestellt werden (dh, warum Sie bekomme den weißen Platz). Sie werden

self.hidesBottomBarWhenPushed = YES; 

In Ihrer init-Methode oder awakeFromNib verwenden ... und dann

[self.navigationController setToolbarHidden:NO animated:YES]; 

Im viewDidLoad zum Beispiel.

Auf diese Weise geht die Ansicht des Tab-Bar-Controllers korrekt in das Layout, es sind Subviews, wenn Sie die Tab-Leiste ausblenden. Denken Sie daran, self.hidesBottomBarWhenPushed = NO zu nennen; In Ihrem ersten View-Controller wird die Tab-Leiste immer noch ausgeblendet, wenn der zweite View-Controller vom Navigations-Stack aus aufgerufen wird.

+0

danke für die Eingabe! es hat funktioniert! Ich habe es jedoch in den Quellenansicht-Controller und nicht in den Zielansicht-Controller platziert. Ich habe es in prepareForSegue platziert: nicht in der init. – HusseinB

+0

Danke! Das hat mir bei meinem Projekt geholfen. – anna

+0

Ich war verwirrt, ob hidesBottomBarWhenPush in ersten VC oder zweiten VC aufgerufen werden soll. Endlich rief watchFromNib den zweiten VC an und es funktionierte wie ein Zauber. (Hat nicht funktioniert, wenn ViewDidLoad hinzugefügt wurde) –

0

Versuchen Symbolleiste mit dem entsprechenden Rahmen zu zuweisen und Hinzufügen