我想在swift 3中将backbutton的标题更改为任何名称。我尝试了很多方法,但它们都没有为我工作。
self.navigationItem.backBarButtonItem?.title="Title"
self.navigationController?.navigationItem.backBarButtonItem?.title="Title"
仅供参考,我在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
导航项后退按钮名称将与之前视图控制器的标题相同,后者将其推送到导航堆栈:)
因此,如果VC A按下VC B,VC B中的后退按钮将为A.
所以你要做的就是,在使用代码推送新的viewController之前更改前一个viewController的标题:)
self.navigationItem.title = "ABCD"
在VC A的ViewWillAppear中,您可以将标题恢复为之前的标题:)
self.navigationItem.title = "Back to xyz"
所有这一切,如果你不想要所有这些马戏团:)你可以简单地隐藏默认后退按钮使用,
self.navigationItem.hidesBackButton = true
在你的VC B中,创建一个UIBarButton项,设置你想要设置的标题,然后将其设置为leftBarButtonItem :)使用,
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: NSLocalizedString("ABCD", comment: "ABCD"), style: .plain, target: self, action:#selector(self.abcdTapped:)
当然现在不会显示“<”图标:)现在,如果你也想要它,你可以将它作为一个图像添加到后面栏按钮项目:)但它的繁琐:)
希望能帮助到你 :)
你将不得不设置backBarButtonItem
的navigationItem
的viewController
属性,你推动所述viewController
。
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.plain, target: nil, action: nil)
但是,您必须为每个viewController
设置此项。
在Swift 3.0中将下面的代码放在appdelegate
didFinishLaunchingWithOptions
方法中,它对我来说非常适合
let backImage = UIImage(named: "BackNavigation")?.withRenderingMode(.alwaysOriginal)
UINavigationBar.appearance().backIndicatorImage = backImage
UINavigationBar.appearance().backIndicatorTransitionMaskImage = backImage
UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(0, -80.0), for: .default)
最后一行将删除Navigation Back Button
的标题,如果你不想删除标题然后只是评论它
我找不到我要找的答案,所以我与你分享我的解决方案。
有时您必须更改父ViewController中后退按钮的文本而不是ViewController中似乎已定义后退按钮,请记住导航控制器一个接一个地堆叠ViewControllers。
在我的情况下,我在“prepare(for segue: )
”的函数ParentViewController
上做了这个:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showChildViewController" {
if let childViewController = segue.destination as? ChildViewController {
let backItem = UIBarButtonItem()
backItem.title = "Back"
navigationItem.backBarButtonItem = backItem
}
}
这是方式:
extension UINavigationController {
func addCustomBackButton(title: String = "Back") {
let backButton = UIBarButtonItem()
backButton.title = title
navigationBar.topItem?.backBarButtonItem = backButton
}
}
请尝试以下步骤将图像设置为后退按钮。
输出:
步骤1:
将以下代码添加到AppDelegate
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
var backButtonImage = UIImage(named: "Your Image Name")
backButtonImage = backButtonImage?.stretchableImage(withLeftCapWidth: 0, topCapHeight: 0)
UIBarButtonItem.appearance().setBackButtonBackgroundImage(backButtonImage, for: .normal, barMetrics: .default)
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
return true
}
第2步:
将以下代码添加到MainVC
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
title = "Title 1"
navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white, NSFontAttributeName:UIFont(name:"HelveticaNeue", size: 20)!]
}
第3步:
将以下代码添加到DestVC或2ndVC
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
title = "Title 2"
navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white, NSFontAttributeName:UIFont(name:"HelveticaNeue", size: 20)!]
}
第4步:
从StoryBoard中选择您的navigationBar并转到属性检查器。在导航项目下更改您的后退按钮名称输入一个空的空格或以编程方式创建一个带有普通标题的后退按钮。
第5步:
将图标图像添加到资产。 1x29pt,2x58pt和3x87pt。我不确定资产图像的大小。请查看关于尺寸等级的苹果文档。
更新:
我的类似答案与这篇文章有关。
How to customize the navigation back symbol and navigation back text?