引用 UINavigationBar 上的后退按钮

Posted

技术标签:

【中文标题】引用 UINavigationBar 上的后退按钮【英文标题】:Reference the back button on UINavigationBar 【发布时间】:2015-08-18 15:29:44 【问题描述】:

我需要引用UINavigationBarUINavigationItem 中的后退按钮。下图中的Back 按钮。

我没有自定义按钮,因此

navigationItem.backBarButtonItem
navigationItem.leftBarButtonItem

这两个都是零。

有什么方法可以在不自定义的情况下获得对按钮的引用?

参考:

backBarButtonItem leftBarButtonItem

更新:我的comment 可能有助于理解为什么我不想自定义后退按钮。 :)

【问题讨论】:

出于兴趣,为什么要引用它? @Phoen1xUK 我在我的项目中使用这个github.com/szk-atmosphere/SAHistoryNavigationViewController pod。但是正如你所看到的,这个特性的可发现性是非常困难的。所以我正在使用另一个 pod github.com/teodorpatras/EasyTipView 来显示有关它的提示。现在,此提示视图需要引用此 UIBarButtonItem 以在其下方显示提示。 【参考方案1】:

Documentation 这么说 backBarButtonItem:

当该项是导航栏的后项时——当它是 顶部项目下方的下一个项目 - 它可以表示为上的后退按钮 导航栏。使用此属性指定后退按钮。这 默认值为显示导航项标题的按钮。

所以backBarButtonItem默认总是nil,因为它属于前一个视图控制器。获得非零引用的唯一方法是自定义它。

如果你只是想更改名称,可以在之前的 View Controller 中完成。

【讨论】:

这并不能解决我的问题。 :( 我的用例 - ***.com/questions/32076612/…【参考方案2】:

参考我的用例 - Ayush's comment

在获得具体解决方案之前,我在导航栏下方(后退按钮下方)创建了一个虚拟视图来显示提示。这是代码。

let v = UIView(frame: CGRectMake(0, 0, 50, 0))
view.addSubview(v)
let tipText = "Here it the back button"
EasyTipView.showAnimated(true,
  forView: v,
  withinSuperview: view,
  text:tipText,
  preferences: nil,
  delegate: self)

【讨论】:

【参考方案3】:

试试这个

let backItem = UIBarButtonItem(title: "Custom Text HERE", style: .Bordered, target: nil, action: nil)
navigationItem.backBarButtonItem = backItem

【讨论】:

【参考方案4】:

试试这个可能对你有帮助。

 UINavigationItem *i = [self.navigationController.navigationBar.items firstObject];
    i.title = @"Hai";

【讨论】:

以上是关于引用 UINavigationBar 上的后退按钮的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationBar 中的多色后退按钮

如何向 UINavigationBar 添加后退按钮?

更改 UINavigationBar 后退按钮标题

iOS 11 UINavigationBar 后退按钮图像颜色问题

iOS 7 UINavigationBar 隐藏了后退按钮

UINavigationBar 后退按钮标题更改方向更改