iOS: Hinzufügen von navigation bar von XIB
Ich gesehen habe dieses Problem und lösen es durch das manuelle erstellen von UINavigationController in den code. Könnte mir bitte jemand sagen, wenn ich die Navigation Bar von XIB-Attribut-Inspektor -> Set-Top-bar, Schwarzen Navigationsleiste, es wird angezeigt in der XIB-aber wenn ich das Programm starte, es erscheint nicht! Ich bemerkte, dass selbst.NavigationController kam null also ich habe UINavigationController in meinem XIB zuweisen und Feder, aber es ist null! Was ist daran falsch? Brauche ich irgendwelche zusätzlichen Einstellungen?
[EDIT1]
Habe ich versucht, indem Sie es wie unten und es funktioniert, aber ich möchte übergeordnete Klasse von vorwärts-rotation und Darstellung von Ereignissen an untergeordnete controller automatisch. Wenn ich nach es nicht senden, weil ich bin das hinzufügen von nvc als Kind und nicht marketsListViewController. Also dachte ich, ich habe Unterklasse UINavigationController. Siehe EDIT2.
self.marketsListViewController = [[MarketsListViewController alloc] initWithNibName:@"MarketsListViewController" bundle:nil];
UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:self.marketsListViewController];
nvc.navigationBar.barStyle = UIBarStyleBlack;
[self.marketsListView addSubview:nvc.view];
[self addChildViewController:nvc];
[nvc didMoveToParentViewController:self];
[EDIT2]
Ich habe Unterklassen marketsListViewController zu UINavigationController und dachte folgenden arbeiten aber es funktioniert nicht. Es zeigt nur die navigation-bar, UITableView nicht angezeigt!
self.marketsListViewController = [[MarketsListViewController alloc] initWithNibName:@"MarketsListViewController" bundle:nil];
self.marketsListViewController.navigationBar.barStyle = UIBarStyleBlack;
[self.marketsListView addSubview:self.marketsListViewController.view];
[self addChildViewController:self.marketsListViewController];
[self.marketsListViewController didMoveToParentViewController:self];
[EDIT3]
Ich war falsch in Edit1, dass Kinder, die controller nicht bekommen rotation events, wenn ich ein Kind als navigation-controller, root controller. Elternteil noch sendet alle Ereignisse automatisch und das ist es, was ich will!!! 🙂
InformationsquelleAutor applefreak | 2012-10-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie in dir sehen .xib-Datei ist nur da, um Ihnen helfen, Ihre richtige layout und eine gute Idee, wie es Aussehen werden. Wenn du eine app verwendet, die eine navigation bar, die bar ist fast immer geleitet von einem navigation-view-controller (
UINavigationController
). Die Ansicht-Controller, der navigation-controller-hosts keine Gedanken über die nav-bar-Ihrer Ansicht Hierarchien gehen in den Raum unter der bar.So, die Recht Weg, um eine Navigationsleiste in Ihre app ist fast sicher, um mit einem Navigations-controller. Wenn Sie nur einen view controller, stellen, dass dass der navigation-controller der root-view-controller (Anmerkung: der root-Ansicht-controller der Fenster wird die navigation-view-controller). Sie können das Aussehen der bar von Ihrem view-Controllers durch Einstellung der Navigationsleiste Stil:
Update: In dem code, den Sie geschrieben, sind Sie nur die Schaffung eines neuen Navigations-controller, aber nicht tun nichts mit ihm. Ich spielte über die die Tatsache, dass (in den meisten Fällen) den navigation-controller sollte das Fenster den root-view-controller. Es ist gut, zu erstellen Sie Ihre navigation-controller im code, aber Sie werden in der Regel tun es in der app zuweisen, und sobald Sie es schaffen, werden Sie es als das Fenster das root-view-controller. Hier ist ein Beispiel, entlehnt von einem Projekt frisch aus Xcode master/detail-template (sans storyboards):
Beachten Sie, dass nach der Erstellung der Fenster und der navigation-controller, setzt der code den nav-controller wie das Fenster das root-view-controller.
Hi @Celeb Leider kann ich nicht im AppDelegate wie es ist nicht die einzige view-controller ich habe. Die Eltern(container) view-controller nicht Navigationsleiste. Es hat etwa 8-10 Kind Controllern und paar zu haben-navigation-bar auf aktivieren verschachteln von views. Aber ja, ich glaube, ich bin viel näher an der Lösung. Wenn Sie sehen, Edit1, es funktioniert, aber ich kann nicht Benutzer, wie ich es will Kind-controller zu empfangen rotation Ereignisse weitergeleitet von Eltern automatisch. Also ich habe Unterklasse meiner Ansicht-controller zu UINavigationController und das gleiche gemacht aber das funktioniert nicht!! Es zeigt nur, navigationbar!!
Sorry, ich kann nicht erhalten ein klares Verständnis von dem, was Sie hier versuchen. Unterklassen
UINavigationController
ist nicht etwas, das gemeinsame-es ist wohl nicht das richtige zu tun. Wenn Sie nicht bereits haben, würde ich Sie ermutigen, Lesen Sie den View Controller Programming Guide.sorry für die Verwirrung. In kurzen EDIT1 code funktioniert absolut in Ordnung. In diesem code, den ich erstellt habe NavigationController initialisieren mit root-view-controller - marketsListViewController. Also im Grunde habe ich Hinzugefügt, navigation-controller, wie ein Kind, controller auf Eltern, nicht marketsListViewController und daher marketsListViewController Klasse nicht gewünschten events! Ich dachte, eine alternative zu diesem Ansatz ist das erstellen von Unterklassen navigationcontroller - EDIT2. Diese Lösung zeigt nur die navigation abr und nicht uitableview meiner XIB in der ursprünglichen Frage. Ich hoffe, ich bin klar.
über view programming guide, ich Las Sie viele Male und ich denke ich bin ein guter Programmierer 🙂 ich habe gelernt, dass, wenn Sie versuchen, etwas zu erreichen, müssen Sie nicht das Rad neu erfinden. Wahrscheinlich hat Apple bereits erstellten Klassen für Sie. In diesem Fall meine Voraussetzung ist, um UINavigationController mit Navigationsleiste und trotzdem wollen meine Eltern weiterleiten erforderlich Veranstaltungen für Kinder, so Erben UINavigationController sollte eine gute option! Ist es nicht?
InformationsquelleAutor Caleb