2014-04-17 12 views
21

In meiner Anwendung möchte ich 'Zurück' Text als Schaltfläche zurück Titel für jeden Viewcontroller verwenden. Ich habe so viele Beiträge auf Stackoverflow gelesen, aber nichts bekommen.Ändern UINavigationBar Zurück Schaltfläche Titel

Ich möchte nicht leftbarbuttonitem setzen.

Kann mir jemand bei dieser einfachen Aufgabe helfen.

Danke,

+0

Sie erinnern sich nun im Storyboard einstellen. – AMayes

Antwort

73

Tun Sie dies in den übergeordneten View-Controller nicht in dem Kind

Swift

navigationItem.backBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: nil, action: nil) 

seiner Ziel-C

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil]; 
+7

Eltern View Controller: Hat den Trick. –

+1

Getestet und Welten gut iOS 9.3.2 – rustylepord

+0

NavigationItem.backBarButtonItem = UIBarButtonItem (Titel: "", style: .plain, Ziel: Null, Aktion: Nil) in Swift – Lucas

4

diese Hoffnung Versuchen wird es Arbeit

UIBarButtonItem *btn = 
     [[UIBarButtonItem alloc] initWithTitle:@"New Title" 
             style:UIBarButtonItemStyleBordered 
             target:nil 
             action:nil]; 
[[self navigationItem] setBackBarButtonItem:btn]; 
+0

Danke für die Antwort. Ich habe das schon probiert aber nicht funktioniert. –

+1

fügen Sie diese Zeile in Ansicht did laden Methode von wo Sie nächste Viewcontroller wechseln.wie Sie Detail Controller (mit Zurück-Taste) aus Master-View-Controller dann fügen Sie es in Masterview-Controller Viewdidload-Methode @SeemaSharma – morroko

+1

Ich habe in der Elternansicht Controller geschrieben und es funktioniert. Vielen Dank!!! –

31
self.navigationController.navigationBar.topItem.title = @""; 
+2

Funktioniert in iOS 9.2! – mayqiyue

+0

Awesome fix ... Danke – sheetal

+0

In meinem Fall 'navigationController? .navigationBar.backItem? .title =" "' für Zurück-Taste –

1

swift 2.0:

 override func viewWillAppear(animated: Bool) { 
      self.navigationController!.navigationBar.topItem?.title = "" 
     }   
Note: It works only if storyboard have a chain of navigation stack. 

Weitere Optionen/ändern Titel:

 self.navigationController?.navigationBar.backItem?.title = "" 
     navigationItem.backBarButtonItem?.title = "" 
     navigationItem.leftBarButtonItem?.title = "" 

Entfernen navigationItem:

navigationItem.setLeftBarButtonItem(nil, animated: true) 
+1

Während dieser Code die Frage beantworten kann, ist es besser zu erklären, was es tut, und fügen Sie einige Verweise darauf hinzu. – dotctor

2

Ich musste self.navigationController.navigationBar.backItem.title = @""; verwenden, der Unterschied ist, dass ich backItem statt topItem verwende.

1
navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil) 
1

Wenn Sie Storyboard verwenden Sie den Navigationspunkt in der übergeordneten Ansicht Controller auswählen und auf die Schaltfläche Text, den Sie in ‚Back Button‘ Feld wollen gesetzt. Denken Sie daran, dies im Parent View-Controller einzustellen, nicht in dem Kind, das gedrückt wird.

enter image description here

-1

Um

es dieses extintion zu entfernen zurück
import UIKit 

extension UIViewController { 
    static func swizzle(){ 


     let orginalSelector = #selector(viewDidLoad) 
     let swizzledSelector = #selector(swizzledViewDidLoad) 

     let orginalMethod = class_getInstanceMethod(UIViewController.self, orginalSelector) 
     let swizzledMethod = class_getInstanceMethod(UIViewController.self, #selector(swizzledViewDidLoad)) 

     let didAddMethod = class_addMethod(UIViewController.self, orginalSelector, method_getImplementation(swizzledMethod!), method_getTypeEncoding(swizzledMethod!)) 

     if didAddMethod { 
      class_replaceMethod(UIViewController.self, swizzledSelector, method_getImplementation(orginalMethod!), method_getTypeEncoding(orginalMethod!)) 
     }else{ 
      method_exchangeImplementations(orginalMethod!, swizzledMethod!) 
     } 

    } 

    @objc func swizzledViewDidLoad(){ 
     navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil) 
     swizzledViewDidLoad() 
    } 


} 

danach in AppDelegate innerhalb didFinishLaunchingWithOptions, rufen Sie die swizzle Funktionstaste Titel für alle View-Controller hinzufügen, neue Swift-Datei und kopieren.

UIViewController.swizzle() 

diese func verwendet das Ziel c-Laufzeit die viewDidLoad Methode mit einem anderen auszutauschen, die den Zurück-Button Titel entfernt und dann im Innern der ursprünglichen viewDidLoad

Verwandte Themen