webentwicklung-frage-antwort-db.com.de

Verstecken Sie den Zurück-Button in der Navigationsleiste mit hidesBackButton in Swift

Ich möchte die Zurück-Schaltfläche ausblenden, wenn Sie von einer Ansicht zur anderen wechseln. Ich habe die Fragen zu diesem Problem gelesen und jede Antwort lautete "use hidesBackButton". Das Problem dabei ist:

  • wenn ich es in viewDidLoad/viewWillAppear stecke, wird der Pfeil für den Zurück-Button ausgeblendet, der String "Back" jedoch nicht.

  • wenn ich es in viewDidAppear stecke, verschwindet die Zurück-Schaltfläche, ist aber für den Benutzer sichtbar

Wie kann ich das beheben? 

Bearbeiten:  

So können Sie dieses Problem (oder einen Fehler) replizieren
Erstellen Sie eine neue Tabbed-Anwendung mit Swift in Xcode. Verwenden Sie in FirstViewController.Swift den Befehl performSegueWithIdentifier, um zum zweiten View-Controller zu navigieren. Verbergen Sie in der SecondViewController.Swift die Zurück-Schaltfläche der Navigationsleiste mit hidesBackButton, und Sie werden sehen, was das Problem ist.

26
Amer Hukic

Versuchen Sie Folgendes hinzuzufügen:

let backButton = UIBarButtonItem(title: "", style: .Plain, target: navigationController, action: nil)
navigationItem.leftBarButtonItem = backButton
40
ericgu

So blenden Sie den Zurück-Button mit dem neuesten Swift aus:

self.navigationItem.setHidesBackButton(true, animated: false)
47
ObjectiveTC

Sie können den folgenden Code verwenden, um die Schaltfläche "Zurück" in UINavigationBar zu verbergen.

Swift 3 ;

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationItem.hidesBackButton = true
}
16
Celil Bozkurt

das hat für mich funktioniert

navigationController?.navigationBar.topItem?.hidesBackButton = true
8
luhuiya

Versuchen Sie, dies hinzuzufügen, das hat für mich funktioniert

navigationItem.hidesBackButton = true
6
Ha cong Thuan
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.

    self.navigationController?.navigationBarHidden = false
    var button: UIButton = UIButton()
    button.setImage(UIImage(named: "person-icon.jpg"), forState: .Normal)
    button.frame = CGRectMake(0, 0, 25, 25)
    button.targetForAction("actioncall", withSender: nil)
    var rightItem:UIBarButtonItem = UIBarButtonItem()
    rightItem.customView = button
    self.navigationItem.rightBarButtonItem = rightItem

    let backButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: navigationController, action: nil)
    navigationItem.leftBarButtonItem = backButton
}

override func viewWillAppear(animated: Bool) {
    let backButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: navigationController, action: nil)
    navigationItem.leftBarButtonItem = backButton
}
6
A.G

Das hat für mich funktioniert:

override func viewWillAppear(animated: Bool)
{
    super.viewWillAppear(animated)

    self.tabBarController?.navigationItem.hidesBackButton = true
}
1
Bruno Cunha

Arbeitete für mich, wenn ich es in init () setze, anstatt viewDidLoad. Seltsam

1
Joe M