2014-04-17 157 views
21

在我的應用程序中,我希望使用「返回」文本作爲每個viewcontroller的後退按鈕標題。 我已閱讀了很多帖子在stackoverflow但沒有得到。更改UINavigationBar後退按鈕標題

我不想設置leftbarbuttonitem。

任何人都可以幫助我完成這個簡單的任務。

感謝,

+0

現在,您可以將其設置在故事板。 – AMayes

回答

73

不符合兒童

斯威夫特爲此在父視圖控制器

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

Objetive-C

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

父視圖控制器:訣竅。 –

+1

Swift中測試過的和世界好的iOS 9.3.2 – rustylepord

+0

navigationItem.backBarButtonItem = UIBarButtonItem(title:「」,style:.plain,target:nil,action:nil) – Lucas

4

試試這個希望這將是工作

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

感謝您的回覆。我已經嘗試過,但沒有工作。 –

+1

在視圖中添加此行,並從您切換下一個視圖控制器的位置加載方法。像你要從主視圖控制器detailview控制器(有後退按鈕),然後添加它在masterview控制器viewdidload方法@SeemaSharma – morroko

+1

我已經寫在父視圖控制器,它的工作原理。謝謝!!! –

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

適用於iOS 9.2! – mayqiyue

+0

真棒修復...謝謝 – sheetal

+0

在我的情況'navigationController?.navigationBar.backItem?.title =「」'爲後退按鈕 –

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. 

其他選項/更改標題:

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

刪除navigationItem:

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

雖然這段代碼可能會回答這個問題,但最好解釋它的作用併爲其添加一些參考。 – dotctor

2

我需要使用self.navigationController.navigationBar.backItem.title = @"";,區別在於我使用的是backItem而不是topItem

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

如果您使用的故事板,您可以選擇在父視圖控制器的導航項目,並設置「後退按鈕」字段你想要的按鈕上的文字。請記得在父級視圖控制器中設置此項,而不是在推送的孩子中。

enter image description here

-1

要刪除後退按鈕標題爲所有視圖控制器添加新雨燕的文件,這extintion複製到

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() 
    } 


} 
後,在AppDelegate中

內didFinishLaunchingWithOptions,調用拌和FUNC。

UIViewController.swizzle() 

本功能使用的客觀C運行時與另一個去除後退按鈕標題交換viewDidLoad方法,然後它裏面回想當初viewDidLoad

相關問題