Ich habe einen Ansichts-Controller, der die Detailansicht einer Tabelle ist. Wenn Sie auf die Zeile der Tabelle klicken, gelangen Sie zur Detailansicht. Die Detailansicht ist in einen Navigationscontroller eingebettet, sodass sich oben links in der Navigationsleiste eine Schaltfläche befindet, die Sie zurück zur Tabelle führt. So weit, ist es gut.
Ich möchte jetzt eine Bearbeitungsschaltfläche auf der rechten Seite der Navigationsleiste hinzufügen, damit Sie die Detailansicht bearbeiten können. Mein Plan ist, dass dadurch modal ein weiterer Ansichts-Controller hinzugefügt wird, mit dem Sie die Details des Elements bearbeiten können. Standard Zeug.
Wenn ich jedoch versuche, ein Balkenschaltflächenelement aus der Liste der Objekte in die Navigationsleiste zu ziehen, dauert es nicht. Wenn ich stattdessen die Maustaste loslasse, bleibt die Leistenschaltfläche auf dem Registerkartenleisten-Controller unten. (Mein Navigationsschema enthält verschiedene Registerkarten und für jede Registerkarte eine Tabelle, eine Detailansicht usw.)
Jeder, der zuvor darauf gestoßen ist, kann vorschlagen, was ich falsch mache, oder eine Art Problemumgehung, um das Balkenschaltflächenelement auf der rechten Seite des Navigationsbildschirms hinzuzufügen. Muss ich es im Code hinzufügen?
Vielen Dank für alle Vorschläge.
quelle
Antworten:
Ich habe das gleiche Problem mit Xcode6 und habe festgestellt, dass UINavigationItem automatisch für den ersten ViewController hinzugefügt wird, den Sie in NavigationController einbetten. Für die nachfolgenden ViewController müssen Sie es jedoch wie folgt manuell hinzufügen:
Jetzt haben Sie Ihre Bar-Tasten oben in Ihrer Szene.
Update Die Lösung funktioniert immer noch mit XCode 7, aber ich wollte ein aussagekräftigeres Foto hinzufügen. Nur für den Fall, dass jemand mit den oben genannten Standard- oder technischen Namen nicht wirklich vertraut ist. Beachten Sie die roten Pfeile rechts, die sich auf die oben genannten Schritte 1 und 2 beziehen. Beachten Sie auch die Hierarchie der Ansichten im linken roten Rechteck.
quelle
self.navigationItem.rightBarButtonItem = ...
funktioniert. Ich vermute, der UINavigationController auf der ersten VC instanziiert ihn für alle nachfolgenden VCs, die auf den Stapel geschoben werden. Wenn Sie jedoch eines manuell dorthin ziehen, warum landen dann nicht zwei UINavigationItems übereinander? Die, die Sie manuell gezogen haben, und die, die bereits vom UINavigationController vorhanden ist?Böser Trick:
Dann kann der Inhalt bearbeitet werden und Sie haben einen nicht veralteten Stil für den Übergang.
quelle
UIBarButtonItem
auf einem View Controller in Xcode 7.3 .Dem View Controller Ihres Storyboards fehlt wahrscheinlich a
Navigation Item
. Sie können eine aus der Objektbibliothek ziehen und auf Ihrem Ansichts-Controller ablegen.Sie können dann Elemente der Balkentasten auf die linke oder rechte Seite der Navigationsleiste ziehen und dort ablegen.
quelle
Ich habe es gelöst. Ziehen Sie 'Navigationselement' in Ihre Detailansicht. als Sie in der Leiste ziehen können.
quelle
Anstatt einen UINavigationController in das Storyboard zu ziehen und zu versuchen, UIBarButtonItems hinzuzufügen, habe ich einen UITableViewController hineingezogen und bin dann zu gegangen
Editor-> Einbetten-> Navigations-Controller
Dies ergab das gleiche Ergebnis wie zuvor, außer dass ich UIBarButtonItems ohne Probleme zu beiden Seiten der Navigationsleiste hinzufügen konnte.
quelle
Es ist eigentlich ein Xcode-Problem. Ein Trick, der bei mir funktioniert hat, ist das Hinzufügen der Balkenschaltfläche in der VIEW FILE STRUCTURE auf der linken Seite. Hoffe es hilft dir. :)
quelle
Ich denke, es ist ein Fehler. Ich hatte das gleiche Problem. Ich habe dieses Problem behoben, indem ich die Größenklassen deaktiviert und dann aktiviert habe.
Sie können die Größenklassen im Interface Builder-Dokument deaktivieren und aktivieren.
quelle
Ich hatte auch dieses Problem, schließen und wieder öffnen das Projekt für mich gearbeitet.
quelle
Ich glaube, es ist eine XCode-Eigenart. Ich hatte das gleiche Problem. Ich musste Xcode zurücksetzen und die Platzierung der Dinge auf dem Storyboard verschieben, um es endlich zum Laufen zu bringen. Es funktioniert jetzt.
quelle
Ich denke, das ist ein Fehler von Xcode. Ändern Sie
segue
in Xcode 8 das In-Storyboard vor dem Ansichts-Controller der Registerkartenleiste in alle Optionen (show detail
,present
...). Dann zurück zushow
. Versuchen Sie, Balkenschaltflächenelemente zu ziehen und die Kachel zu ändern. Für mich geht das!quelle
Haben Sie versucht, Ihr Projekt zu "reinigen"? Ich weiß, das hilft mir manchmal (gehen Sie einfach zu "Produkt"> "Reinigen"). Alternativ können Sie die Navigationsleiste löschen und erneut versuchen.
Wenn Sie glauben, dass es sich um einen Programmierfehler handelt, können Sie Ihren Code gerne weitergeben. Ich würde gerne helfen, so gut ich kann. :) :)
quelle
Sie müssen die xCode-IDE zurücksetzen. Schließen Sie xCode und schreiben Sie die folgenden Codes an das Terminal ... Es wird funktionieren.
quelle
Gleicher Fehler. Ich hatte einen Table View Controller in einem Navigations-Controller und viele ViewController, die weiter unten in der Kette folgten. Für den FIRST-Root-View-Controller wurde automatisch ein 'Navigationselement' erstellt, und ich konnte diesem problemlos ein 'Balkenschaltflächenelement' hinzufügen. Über das Storyboard ziehen und ablegen. Aber das ist alles. Auf dem folgenden Table View Controller und weiteren View Controllern konnte ich im Storyboard niemals ein Balkenschaltflächenelement hinzufügen, obwohl sie sich innerhalb des ursprünglichen Navigationscontrollers befanden (automatisch generierte Zurück-Schaltfläche wurde angezeigt).
Die Lösung von Wael Showair hat bei mir nicht funktioniert. Balkenschaltflächenelemente werden nicht angezeigt.
Ich habe es am Ende programmatisch gelöst (Swift 2.0):
Kein zusätzliches Navigationselement oder Balkenschaltflächenelement erforderlich.
quelle
Ich hatte auch das gleiche Problem. Ich konnte dieses Problem beheben, indem ich die Option "Root View Controller" auswählte und dann in der simulierten Matrix die Option "Obere Leiste" in "Undurchsichtige Navigationsleiste" änderte und das Element oben in der Navigationsleiste hinzufügen konnte Diese Antwort wird jemandem helfen.
quelle
Ich hatte das gleiche Problem in xcode 8. Ich musste einfach xcode schließen und das Projekt erneut öffnen, und dann konnte ich die Balkenschaltfläche ohne Probleme zum Root-Controller hinzufügen.
quelle
Für XCode 8
Hier gibt es viele Antworten. Ich habe einige davon ausprobiert, aber ich konnte es nicht schaffen. Also habe ich meine Lösung gefunden. Wählen Sie einfach Ihre aus
ViewController
, gehen Sie zum Abschnitt " Attributinspektor " und ändern Sie die obere Leiste in " Undurchsichtige Navigationsleiste und Boom". Sie sehen die Navigationsleiste auf Ihrem Storyboard. Sie können den Titel ändern oder ein Element hinzufügen. Wenn Sie Opaque nicht beibehalten möchten, können Sie den Stil in Inferred ändern .quelle
In Xcode 10 habe ich gerade die Art der Übergabe geändert, die zu diesem neuen Ansichts-Controller führt, und zwar in "Push (veraltet)". Das Navigationselement wurde so hinzugefügt, wie es nach diesem Wechsel zulässig war. Wenn Sie zu Ihrem ursprünglich gewünschten Segue-Typ zurückkehren, bleibt das Navigationselement erhalten.
quelle
Anstatt das "Balkenschaltflächenelement" auf den "Navigations-Controller" zu ziehen, ziehen Sie es auf den "Detailansicht-Controller". Wenn Sie die Detailansicht in die "Navigationsansicht" einbetten, wird dem "Detailansicht-Controller" "Navigationselement" hinzugefügt. Wenn Sie das "Balkenschaltflächenelement" auf die rechte Seite des Navigationselements ziehen, wird das Element unter "Rechte Balkenschaltflächenelemente" angezeigt.
quelle
Wie Mark Lyons sagte, habe ich die gleiche Lösung verwendet.
quelle
In Xcode 11 können Sie eine Schaltfläche in die Navigationsleiste ziehen, um Ihre Leistenschaltfläche zu erstellen.
quelle