引用 UINavigationBar 上的后退按钮
Posted
技术标签:
【中文标题】引用 UINavigationBar 上的后退按钮【英文标题】:Reference the back button on UINavigationBar 【发布时间】:2015-08-18 15:29:44 【问题描述】:我需要引用UINavigationBar
或UINavigationItem
中的后退按钮。下图中的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 上的后退按钮的主要内容,如果未能解决你的问题,请参考以下文章