如何在不覆盖自然后退按钮的情况下添加左栏按钮?
Posted
技术标签:
【中文标题】如何在不覆盖自然后退按钮的情况下添加左栏按钮?【英文标题】:How do I add a left bar button without overriding the natural back button? 【发布时间】:2016-08-22 05:57:22 【问题描述】:我有一个使用嵌入在导航视图控制器中的 UIViewControllers 的项目,所以每当我进入我的表格视图的任何细节时,都会自动为我设置后退按钮。
现在我想在后退按钮旁边添加一个编辑按钮。我已经在右侧放置了一个取消分配按钮,由于“取消分配”这个词很长,我宁愿将编辑按钮放在左侧的后退按钮旁边。
我知道我可以使用navigationItem.leftBarButtonItem = editButton
以编程方式添加条形按钮,但这会覆盖后退按钮。
我也尝试将 editButton 附加到 navigationItem.leftBarButtonItems
数组,但这也不起作用(因为 leftBarButtonItems 数组首先没有设置)。
我的下一个方法是找到后退按钮并手动将其添加到 leftBarButtonItems 数组中,因此我尝试使用 navigationItem.leftBarButtonItems = [self.navigationItem.backBarButtonItem!, editButton]
,但这只会在 editButton 和左侧之间添加一个空格。没有返回按钮。
如何在保持后退按钮不变的情况下添加左栏按钮?有没有比使用 self.navigationController?.popViewControllerAnimated(true)
手动编写新的后退按钮并将其添加到 leftBarButtonItems 数组更优雅的方法?
【问题讨论】:
【参考方案1】:默认情况下,leftItemsSupplementBackButton
属性为false
。在这种情况下,
后退按钮未绘制,左侧项目或项目替换它。如果你
希望左边的项目出现在后退按钮之外(而不是代替它)将leftItemsSupplementBackButton
设置为true
。
@property(nonatomic) BOOL leftItemsSupplementBackButton
你可以使用这样的东西
navigationItem.leftBarButtonItem = editButton
//or
navigationItem.leftBarButtonItems = [editButton]
self.navigationItem.leftItemsSupplementBackButton = true
【讨论】:
哦,是的,谢谢!完美的答案,正是我想要的。花了太多时间谷歌搜索却一无所获 XD 当您为某件事而苦苦挣扎并找到完全符合您需求的答案时......在一行中,没有丑陋的解决方法,没有犹豫,只是一个神圣的完美小布尔值。那天你很高兴成为一名开发人员,你热爱你的工作……今天是星期五。谢谢♥【参考方案2】:这两行可以解决问题。将leftItemSupplementBackButton
设置为true,然后添加leftBarButtonsItems
。
self.navigationItem.leftItemsSupplementBackButton = true
self.navigationItem.leftBarButtonItems = [barButton]
【讨论】:
注意,如果您尝试将新按钮“附加”到 leftBarButtonItems - 它不起作用以上是关于如何在不覆盖自然后退按钮的情况下添加左栏按钮?的主要内容,如果未能解决你的问题,请参考以下文章