如何在swift3中更改导航控制器上的后退按钮标题?

Tec*_*ain 3 uinavigationbar uinavigationcontroller uinavigationitem swift

我想在swift 3中将backbutton的标题更改为任何名称.我尝试了很多方法,但它们都没有为我工作.

self.navigationItem.backBarButtonItem?.title="Title"
self.navigationController?.navigationItem.backBarButtonItem?.title="Title"
Run Code Online (Sandbox Code Playgroud)

仅供参考,我在appdelegate中编写了以下代码.

let backImage : UIImage = UIImage(named:"backArrow")!
UINavigationBar.appearance().barTintColor = UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 1.0)
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().backIndicatorImage = backImage
UINavigationBar.appearance().backIndicatorTransitionMaskImage = backImage
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white]
UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(0, 0), for: .default)
IQKeyboardManager.sharedManager().enable = true
self.window?.backgroundColor = UIColor.white
Run Code Online (Sandbox Code Playgroud)

San*_*ari 5

导航项后退按钮名称将与之前视图控制器的标题相同,后者将其推送到导航堆栈:)

因此,如果VC A按下VC B,VC B中的后退按钮将为A.

所以你要做的就是,在使用代码推送新的viewController之前更改前一个viewController的标题:)

self.navigationItem.title = "ABCD"
Run Code Online (Sandbox Code Playgroud)

在VC A的ViewWillAppear中,您可以将标题恢复为之前的标题:)

self.navigationItem.title = "Back to xyz"
Run Code Online (Sandbox Code Playgroud)

所有这一切,如果你不想要所有这些马戏团:)你可以简单地隐藏默认后退按钮使用,

self.navigationItem.hidesBackButton = true
Run Code Online (Sandbox Code Playgroud)

在你的VC B中,创建一个UIBarButton项,设置你想要设置的标题,然后将其设置为leftBarButtonItem :)使用,

self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: NSLocalizedString("ABCD", comment: "ABCD"), style: .plain, target: self, action:#selector(self.abcdTapped:)
Run Code Online (Sandbox Code Playgroud)

当然现在不会显示"<"图标:)现在,如果你也想要它,你可以将它作为一个图像添加到后面栏按钮项目:)但它的繁琐:)

希望能帮助到你 :)


Spa*_*arr 5

你将不得不设置backBarButtonItem的属性navigationItemviewController,你推说viewController从。

self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.plain, target: nil, action: nil)
Run Code Online (Sandbox Code Playgroud)

但是,您必须为每个viewController.