如何更改导航栏的后退按钮的字体。
后退按钮可以是“后退”,也可以是前一个视图控制器的标题。
我认为这viewDidLoad可以工作:
viewDidLoad
navigationController?.navigationItem.leftBarButtonItem?.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "FONTNAME", size: 20)!], forState: UIControlState.Normal)
但leftBarButton?可选的return nil。
leftBarButton?
nil
刚刚测试了您的代码,看来行返回的原因nil实际上是因为name: "FONTNAME"返回nil。因此,如果您将该name属性设置为有效的字体名称,则代码应该运行无错误- 即使navigationController?.navigationItem.leftBarButtonItem显式设置为nil。
name: "FONTNAME"
name
navigationController?.navigationItem.leftBarButtonItem
但是无论如何,正如我在测试中看到的那样,这条线不会给您显然想要的结果。前导的navigationController可选内容不应该存在,因为它访问您UINavigationController的视图而不是当前视图。只需使用UIViewController自己的navigationItem属性即可leftBarButtonItem直接访问其属性,例如:
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因为您不想执行自定义操作,而不是返回到先前的视图控制器。
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