it-swarm.com.de

xcode/storyboard: Die Leistenschaltfläche kann nicht in die Symbolleiste oben gezogen werden

Ich habe einen Ansichtscontroller, 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 Tabelle zurückschickt. 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 ein weiterer View-Controller hinzugefügt wird, mit dem Sie die Details des Elements bearbeiten können. Standard Zeug.

Wenn ich jedoch versuche, ein Bar-Schaltflächenelement aus der Objektliste in die Navigationsleiste zu ziehen, ist dies nicht erforderlich. Wenn ich stattdessen die Maustaste loslasse, bleibt die Balkenschaltfläche in der Registerkartenleiste unten. (Mein Navigationsschema enthält verschiedene Registerkarten und für jede Registerkarte eine Tabelle, Detailansicht usw.)

Jeder stößt schon früher darauf und kann vorschlagen, was ich falsch mache, oder eine Art Problemumgehung, um den Bar-Schaltflächeneintrag auf der rechten Seite des Navigationsbildschirms hinzuzufügen. Muss ich es im Code hinzufügen?

Danke für alle Vorschläge.

86
user1904273

Ich habe das gleiche Problem mit Xcode6, und ich habe festgestellt, dass UINavigationItem automatisch für den ersten ViewController hinzugefügt wird, den Sie in NavigationController einbetten.

  1. Suchen Sie in der Objektbibliothek nach Navigation Item und ziehen Sie es in den 2nd ViewController im Storyboard.
  2. Suchen Sie in der Objektbibliothek nach Bar Button Item und ziehen Sie das Navigationselement, das Sie im vorherigen Schritt erstellt haben.

Jetzt werden Ihre Balkenknöpfe oben in Ihrer Szene angebracht.

Update Die Lösung funktioniert immer noch mit XCode 7, aber ich wollte ein beschreibenderes 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, sie beziehen sich auf Schritt 1, Schritt 2, der oben erwähnt wurde. Beachten Sie auch die Hierarchie der Ansichten im linken roten Rechteck.  enter image description here

148
Wael Showair

Böser Trick:

  1. Ändern Sie Ihre Auswahl in Push. 
  2. Stellen Sie den gewünschten Inhalt ein
  3. Zurück zu zeigen

Der Inhalt kann dann bearbeitet werden, und Sie haben einen nicht veralteten Stil für die Übergabe. 

63
Baxter Lopez

In Ihrem Viewboard für das Storyboard fehlt wahrscheinlich ein Navigation Item. Sie können einen aus der Objektbibliothek ziehen und auf Ihrem View Controller ablegen.

Sie können dann Elemente der Leistenschaltfläche auf die linke oder rechte Seite der Navigationsleiste ziehen.

29
user4151918

ich habe es gelöst. Ziehen Sie unter "Navigationselement" in Ihre Detailansicht. als Sie im Bar Button Element ziehen können.

22
Jamal N. Ahmad

Ich habe dieses Problem behoben. Statt einen UINavigationController in das Storyboard zu ziehen und zu versuchen, UIBarButtonItems hinzuzufügen, zog ich einen UITableViewController mit und ging dann zu 

Editor-> Embed In-> Navigationscontroller

Dies ergab das gleiche Ergebnis wie zuvor, nur dass ich UIBarButtonItems auf beiden Seiten der Navigationsleiste ohne Probleme hinzufügen konnte.

8
tallen11

Das ist eigentlich ein Xcode-Problem . Ein Trick, der für mich funktioniert hat, ist das Hinzufügen des Bar-Buttons in der DATEI-STRUKTUR AUF LINKS ANSICHTEN.

5
Chetan Kumar

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

5
Hongyang

Ich hatte auch dieses Problem, schließen und öffnen Sie das Projekt für mich.

4
Hsm

Ich denke, das ist ein Fehler von Xcode. Ändern Sie in Xcode 8 die Variable segue im Storyboard vor dem Controller für die Registerkartenleiste auf alle Optionen (show detail, present...). Dann zurück zu show. Versuchen Sie, Schaltflächenelemente zu ziehen und die Kachel zu ändern. Für mich geht das!

3
user2174595

Ich glaube, es ist eine XCode-Variante. Ich hatte das gleiche Problem. Ich musste Xcode zurücksetzen und die Anordnung der Dinge auf dem Storyboard verschieben, um es endlich zum Laufen zu bringen. Es funktioniert jetzt.

3
rotarycuff

Gleicher Fehler. Ich hatte einen Table View Controller in einem Navigationscontroller und viele ViewControllers im weiteren Verlauf der Kette. Ein 'Navigationselement' wurde automatisch für den FIRST Root View Controller erstellt, und ich konnte problemlos ein 'Bar Button-Element' hinzufügen. Ziehen Sie das Storyboard per Drag & Drop. Aber das ist alles. Auf dem folgenden Table-View-Controller und weiteren View-Controllern, obwohl sie sich im ursprünglichen Navigations-Controller befanden (automatische Rückschalttaste wurde angezeigt), konnte ich in Storyboard niemals ein Bar-Button-Element hinzufügen.

Die Lösung von Wael Showair hat für mich nicht funktioniert. Bar-Button-Elemente werden nicht angezeigt. 

Ich habe es am Ende programmgesteuert gelöst (Swift 2.0):

var testButton = UIBarButtonItem(title: "Test Button", style .Plain, target: self, action: "testButtonMethod")
self.tabBarController?.navigationItem.rightBarButtonItem = testButton

Kein zusätzliches Navigationselement oder Bar-Schaltflächenelement erforderlich.

1
Elliott Davies

Ich hatte das gleiche Problem in xcode 8. Ich musste xcode einfach schließen und das Projekt erneut öffnen. Anschließend konnte ich die Leiste ohne Probleme zum Root-Controller hinzufügen.

1
SGM

Haben Sie versucht, Ihr Projekt zu "reinigen"? Ich weiß, dass mir das manchmal hilft (gehe einfach zu "Produkt"> "Reinigen"). Oder löschen Sie alternativ die Navigationsleiste und versuchen Sie es erneut.

Wenn Sie glauben, dass es sich um einen Programmierfehler handelt, können Sie Ihren Code gerne weitergeben. Ich helfe Ihnen gerne, soweit ich kann. :)

1
JJ Yu

Für XCode 8

Hier gibt es viele Antworten. Ich habe einige von ihnen ausprobiert, konnte es aber nicht schaffen ... Ich habe meine Lösung gefunden. Wählen Sie einfach Ihre ViewController aus, gehen Sie zu Attributes Inspector und ändern Sie Top Bar in Opaque-Navigationsleiste und Boom. Sie sehen die Navigationsleiste in Ihrem Storyboard. Sie können den Titel ändern oder etwas hinzufügen. Wenn Sie Opaque nicht beibehalten möchten, können Sie den Stil in Inferred ändern. 

 enter image description here

1
emresancaktar

Sie müssen xCode IDE zurücksetzen. Schließen Sie xCode und schreiben Sie die folgenden Codes am Terminal ... Es wird funktionieren.

rm -rf $HOME/Library/Application Support/Developer/Shared/Xcode
rm -rf $HOME/Library/Preferences/com.Apple.dt.Xcode.*
rm -rf $HOME/Library/Saved\ Application\ State/com.Apple.dt.Xcode.savedState
rm -rf $HOME/Library/Developer/Xcode
1
Yusuf Kıldan

Ich war auch mit dem gleichen Problem konfrontiert. Ich konnte dieses Problem beheben, indem ich die Root-Ansichtssteuerungsoption auswählte, und dann in der simulierten Matrix die Option Oberste Leiste in Opake Navigationsleiste änderte und das Element oben in der Navigationsleiste hinzufügen konnte Diese Antwort wird jemandem helfen.

1
reetu

In Xcode 10 habe ich die Art der Überblendung für diesen neuen Ansichtscontroller in "Push (veraltet)" geändert und das Navigationselement so hinzugefügt, wie es nach dieser Änderung zulässig war. Wenn Sie zu Ihrem ursprünglich gewünschten Seguetyp zurückkehren, bleibt das Navigationselement erhalten.

0
Mark Lyons

Ziehen Sie das "Bar Button Item" nicht auf den "Navigation Controller", sondern ziehen Sie es auf den "Detail View Controller". Wenn Sie die Detailansicht in die "Navigationsansicht" einbetten, wird "Navigationselement" zum "Detailansicht-Controller" hinzugefügt. Wenn Sie das "Bar Button Item" auf die rechte Seite des Navigationselements ziehen, wird das Element unter "Right Bar Button Items" angezeigt.

0
Nancy

wie Mark Lyons sagte, habe ich die gleiche Lösung verwendet.

  • gebrauchte Push-Segue zuerst
  • hat das Balkenelement hinzugefügt
  • kehren Sie zurück, um den Abschnitt anzuzeigen
  • erledigt
0
HassanBro