it-swarm.com.de

Bar-Schaltflächenelement nicht in der Navigationsleiste angezeigt

Ich arbeite an einer App, bei der mein erster Ansichtscontroller in einen Controller für Navigationscontroller und Registerkartenleiste eingebettet ist. 

In meiner App habe ich 3 verschiedene Registerkarten. Eine Registerkarte ist die Einstellungsansicht. Dies ist eine Tabellenansicht mit 5 Tasten. Jede Schaltfläche zeigt den gleichen View-Controller, wenn sie berührt wird. 

Wenn ich auf eine der Schaltflächen tippe, habe ich immer noch eine grüne Navigationsleiste, aber meine Schaltflächen funktionieren nicht.

Ich habe versucht, ein Navigationselement in die Ansicht in meinem Storyboard zu ziehen und dann ein Bar-Schaltflächenelement darin einzufügen. Ich kann die Schaltfläche in meinem Storyboard sehen, sie wird jedoch nicht in meiner App angezeigt, wenn ich sie ausführe.

Ich habe auch folgenden Code zu meinem viewDidLoad () hinzugefügt:

let leftItem = UIBarButtonItem(title: "< Back", style: .Done, target: self, action: Selector("Save"))
let rightItem = UIBarButtonItem(title: "Save", style: .Plain, target: self, action: Selector("Save"))

//self.parentViewController?.navigationItem.leftBarButtonItem = leftItem // also doesn't work

navigationController?.navigationItem.leftBarButtonItem = leftItem
navigationController?.navigationItem.rightBarButtonItem = rightItem

Aber es wird keine Wirkung haben.

Ich habe nachgeprüft, ob meiner Ansicht im Storyboard der richtige UIViewController zugewiesen wurde, und es wurden mehrere Clean-Builds (CMD + Shift + K) und Rebuilds (CMD + B) durchgeführt.

Die folgenden Bilder sind ein Screenshot eines Teils meines Storyboards und ein Screenshot meiner App in der Ansicht, in der die Schaltflächen nicht angezeigt werden.

EDIT

Ein neuer Screenshot zu den Steuerelementen in der Ansicht wurde hinzugefügt. Diese funktionieren nicht mit oder ohne den zusätzlichen Code in meinem viewDidLoad.

 Screenshot of my Storyboard

 Screenshot of my app where the buttons should show up

 Screenshot of the the setup of the controls in my view

13
Jules

Löschen Sie Ihren ersten Navigations-Controller. Zweitens brauchen Sie nicht die Zurück-Schaltfläche hinzuzufügen. Verwenden Sie einfach Push segue. 3. Versuchen Sie, self.navigationItem.leftBarButtonItem zu verwenden.

5
Ersin Sezgin

Anstatt 

navigationController?.navigationItem.leftBarButtonItem = leftItem

tun 

navigationItem.leftBarButtonItem = leftItem

Update Ich schlage vor, dass Sie sie direkt im Storyboard zu Ihrem Viewcontroller hinzufügen

9
MarkHim

Ich hatte zwei Bereiche: einen über einen Storyboard-Bereich und einen programmatisch. Die Storyboard-Ansicht zeigte die Schaltflächen wie erwartet. Der Programmabschnitt zeigte jedoch die Ansicht ohne die Schaltflächen.

Für den programmatischen Bereich habe ich verwendet:

present(theNewVC, animated: true)

Die Schaltflächen erschienen und funktionierten korrekt, als ich das zu folgendem geändert hatte:

show(theNewVC, sender: self)

In der Dokumentation präsentiert present(...) den View-Controller modal. Anscheinend erhält ein Controller für modale Ansichten nicht die Schaltflächen der Navigationsleiste. Ich bestätigte dies weiter, indem ich meine Storyboard-Ansicht in Present Modally änderte - und die Schaltflächen verschwanden ebenfalls dort.

(Mit Xcode 9, Swift 4)

2
leanne

Ich bin auch auf dieselbe Ausgabe gestoßen. 

In iOS 11 funktioniert es einwandfrei, aber für iOS 10 oder weniger wurde kein UIBarButtonItems angezeigt, das programmgesteuert hinzugefügt wurde.

Bitte weisen Sie UIBarButtonItem einen Frame zu.

let button =  UIButton(type: .custom)
button.setImage(UIImage(named: "img_name"), for:.normal)
button.addTarget(self, action: #selector(btnAction), for: .touchUpInside)
button.frame = CGRect(x:0, y:0, width:32, height:32)
let barButton = UIBarButtonItem(customView: button)
self.navigationItem.rightBarButtonItem = barButton

1
iDev

Das ist mir kürzlich passiert. Ich tat, was Ersin erwähnte, aber ohne Erfolg. Backtracked ein wenig mehr und fand heraus, dass dies der Täter war:

nav.pushViewController(notifications, animated: false) nav.pushViewController(interactionCreateOrEdit, animated: false)  

Ich habe es geändert

nav.setViewControllers([notifications, interactionCreateOrEdit], animated: false)

die UIBarButtonItems wurden wieder angezeigt.

0
Michael McKenna