一尘不染

如何更改导航栏的后退按钮的字体?

swift

如何更改导航栏的后退按钮的字体。

后退按钮可以是“后退”,也可以是前一个视图控制器的标题。

我认为这viewDidLoad可以工作:

navigationController?.navigationItem.leftBarButtonItem?.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "FONTNAME", size: 20)!], forState: UIControlState.Normal)

leftBarButton?可选的return nil


阅读 250

收藏
2020-07-07

共1个答案

一尘不染

刚刚测试了您的代码,看来行返回的原因nil实际上是因为name: "FONTNAME"返回nil。因此,如果您将该name属性设置为有效的字体名称,则代码应该运行无错误-
即使navigationController?.navigationItem.leftBarButtonItem显式设置为nil。

但是无论如何,正如我在测试中看到的那样,这条线不会给您显然想要的结果。前导的navigationController可选内容不应该存在,因为它访问您UINavigationController的视图而不是当前视图。只需使用UIViewController自己的navigationItem属性即可leftBarButtonItem直接访问其属性,例如:

let backButton = UIBarButtonItem(title: "< Back", style: UIBarButtonItemStyle.Plain, target: self, action: "goBack")
navigationItem.leftBarButtonItem = backButton
navigationItem.leftBarButtonItem?.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Chalkduster", size: 20)!], forState: UIControlState.Normal)

编辑
:从您在此答案下发布的评论看来,好像您实际上并不想设置,leftBarButtonItem而是backBarButtonItem因为您不想执行自定义操作,而不是返回到先前的视图控制器。

因此,在该先前的视图控制器(即要显示自定义后退按钮项之前的视图)中,您可以设置自定义后退按钮,而无需执行以下操作:

let backButton = UIBarButtonItem(title: "< Back", style: UIBarButtonItemStyle.Plain, target: self, action: nil)
backButton.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Chalkduster", size: 20)!], forState: UIControlState.Normal)
navigationItem.backBarButtonItem = backButton
2020-07-07