2012-10-31 12 views
12

Ich habe viele Beiträge gefunden, aber immer noch keine Lösung. Ich versuche, eine Navigationsleiste auf der ursprünglichen UIViewController zu verstecken, aber ich möchte es immer noch auf der zweiten UIViewController zeigen. Hier ist mein Storyboard ist:Hide NavigationBar für einen ViewController in Storyboard

enter image description here

Als ich die geschlussfolgerten Top Bar für meine Haupt-View-Controller zu deaktivieren, verschwindet es in der Storyboard, aber es zeigt immer noch, wenn ich die app laufen. Wenn ich das gleiche in der Navigationsleiste in NavController mache, verschwindet es für alle drei (weil sie alle die No Nav Bar erben).

Ich möchte die NavBar im ScrollViewV View Controller anzeigen, aber in MainViewController versteckt haben.

Alle Controller haben die entsprechenden .h oder .m-Dateien, aber ich bin verwirrt, wie dies programmgesteuert zu tun ist. Lass es mich wissen, wenn du etwas anderes sehen musst. Vielen Dank!

Antwort

41

In Ihrem Mainviewcontroller, können Sie Folgendes tun:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [self.navigationController setNavigationBarHidden:YES animated:animated]; 
    [super viewWillAppear:animated]; 
} 

Sie können die Navigationsleiste angezeigt werden soll, wenn diese Viewcontroller versteckt, denn das Folgendes tun:

- (void)viewDidDisappear: (BOOL)animated 
{ 
    [self.navigationController setNavigationBarHidden:NO animated:animated]; 
    [super viewDidDisappear:animated]; 
} 
+0

Danke für die alternative Antwort! – Siriss

+0

Dies war die bessere Antwort, um den viewWillAppear zu überschreiben. Danke und Entschuldigung, dass Sie nicht weiter nachforschen, bevor Sie antworten. – Siriss

+0

Ich bin froh, dass Ihr Problem gelöst – user427969

0
self.navigationController.navigationBarHidden = YES; 
+0

Danke! Das heißt, da die anderen vererbt sind, muss ich es auf den anderen ViewControllern, die ich korrekt habe, sichtbar machen? Das war wirklich einfach .... Danke nochmal. – Siriss

+0

Wenn ich auf die NavBar in meinem ScrollView View Controller trete, wird die Navigationsleiste wieder im Hauptansicht-Controller angezeigt ... Wie mache ich das dauerhaft? – Siriss

+1

viewDid/WillAppear und viewDid/WillDissappear ... – Martol1ni

0

Mir ist aufgefallen, dass Sie dem Controller auch Folgendes hinzufügen müssen, damit die Navigation angezeigt werden soll.

[self.navigationController setNavigationBarHidden:NO animated:animated]; 
[super viewWillAppear:animated]; 
2

Wenn Sie Dinge in der Storyboard zu halten, als die User Defined Attribute bearbeiten und gesetzt navigationController.navigationBarHidden als Boolean geprüft.

+0

Dies ist ein großartiger Vorschlag – Siriss

+2

Dies funktioniert, aber Sie können die Navigationsleiste nicht mit dem gleichen Trick in einem anderen ViewController zeigen. (Benutzerdefinierte Laufzeitattribute werden bei Nib-Ladezeit angewendet, nicht bei viewWillAppear) – Berik

0

Wer möchte in Swift wissen, wie man das macht?

override func viewDidAppear(animated: Bool) { 
    self.navigationController?.navigationBar.hidden = true 
} 
Verwandte Themen