web-dev-qa-db-de.com

Wie füge ich dem Navigations-Controller Schaltflächen hinzu, die nach dem Überblenden sichtbar sind

Ich habe in Storyboard einen Ansichts-Controller eingerichtet, der in einen Navigations-Controller eingebettet ist. In diesem Nav-Controller habe ich "Navigationsleiste anzeigen" und "Symbolleiste für Shows" markiert und in Simulierte Metriken eine Navigationsleiste und Symbolleiste in der oberen und unteren Leiste aktiviert. Ich "segne zum Beispiel" von dem View-Controller zu einem anderen View-Controller. In beiden Ansichtscontrollern habe ich Simulated Metrics auf dieselbe Weise eingerichtet, sodass sowohl die Navigationsleiste als auch die Symbolleiste auf allen drei Controllern sichtbar sind.

Das Problem ist, ich kann der ersten Ansichtssteuerung sowohl der Navigationsleiste als auch der Symbolleiste Elemente der Leistenschaltfläche hinzufügen, aber der Navigationsleiste der zweiten Ansichtssteuerung kann kein Leistenschaltflächenelement hinzugefügt werden. Wenn ich eine Schaltfläche in der Navigationsleiste ablege, wird sie stattdessen der Symbolleiste hinzugefügt. Und ich kann nicht doppelt auf die Navigationsleiste klicken, um einen Titel hinzuzufügen. In der Übersicht, die ich sehe, befindet sich auf dem zweiten View-Controller kein Navigationselement, es befindet sich jedoch im ersten View-Controller.

Ich kann wahrscheinlich programmgesteuert Schaltflächen zur Navigationsleiste hinzufügen, aber ich möchte dies visuell in Storyboard tun. Meine Frage ist, was ist mit diesem Setup falsch, oder ist das ein Fehler mit Xcode?

enter image description here

enter image description here

42
Jordan H

Bei XCode 6 wird die UINavigationItem ab dem 2. View Controller nicht automatisch zum View Controller-Objekt im Storyboard hinzugefügt. Sie müssen die Variable UINavigationItem in die Navigationsleiste dieses Controllerobjekts ziehen, bevor Sie UIBarButtonItem darüber hinzufügen. 

Ich bin nicht sicher, warum es so gestaltet ist. Das habe ich erst vor wenigen Wochen entdeckt. 

Xcode 6 UiNavigationItem

86
Ricky

Wenn Sie über eine Vielzahl von Ansichts-Controllern und nur wenige benutzerdefinierte Elemente für das automatische Layout verfügen, können Sie die Größenklassen deaktivieren und dann erneut aktivieren, um alle fehlenden Navigationsleisten im Storyboard hinzuzufügen. 

enter image description here

enter image description here

Offensichtlich nicht empfehlenswert, wenn Sie eine Menge benutzerdefiniertes Layout für automatisches Layout haben.

Wenn Sie nur einen einzigen UIViewController haben, bei dem eine Navigationsleiste fehlt, legen Sie einfach ein UINavigationItem darauf ab.

12
William T.

Wenn Sie Xcode 7 beta 4/5 verwenden, versuchen Sie, Xcode neu zu starten. Das Problem wurde dadurch behoben

3
jrenouard

Es ist sehr einfach. Sie müssen lediglich navigaitonItem als Halter für die Schaltflächen verwenden und dann können Sie noch barButtonItems hinzufügen. 

0
emido333

Ich denke es ist ein Fehler. Ich hatte das gleiche Problem. Ich habe dieses Problem behoben, indem ich die Größenklassen deaktivieren und sie dann aktivieren konnte. 

Sie können die Größenklassen im Interface Builder-Dokument deaktivieren und aktivieren.

enter image description here

0
Hongyang

Für den zweiten View-Controller in der Hierarchie können Sie den Titel in Attributen einrichten, ohne "Navigationselement" .__ hinzuzufügen.enter image description here

0
Daniil Bystrov

Ich bin gerade auf dieses Problem gestoßen und es scheint von dem Segment betroffen zu sein, das den View-Controller anzeigt.

Wenn die "Kind" -Einstellung in "Segue" "Show (z. B. Push)" ist, kann das Element nicht in die rechte obere Ecke gezogen werden. Wenn Sie jedoch die "Kind" -Einstellung explizit auf "Push" ändern, ist dies möglich. 

Edit: eigentlich ist mir gerade aufgefallen, dass "Push" veraltet ist. Nicht sicher, was Apple hier denkt. Sie können es jedoch nach dem Hinzufügen der Schaltfläche einfach wieder in "Anzeigen" ändern, und es scheint zu funktionieren: D

0
ooxio