如何在不覆盖自然后退按钮的情况下添加左栏按钮?

How do I add a left bar button without overriding the natural back button?

我有一个使用嵌入在导航视图控制器中的 UIViewControllers 的项目,所以每当我进入我的 tableviews 的任何细节时,都会自动为我设置后退按钮。

现在我想在后退按钮旁边添加一个编辑按钮。我已经在右侧放置了一个取消分配按钮,并且由于单词 "Unassign" 很长,我宁愿将编辑按钮放在左侧的后退按钮旁边。

我知道我可以使用 navigationItem.leftBarButtonItem = editButton 以编程方式添加栏按钮,但这会覆盖后退按钮。

我也试过将 editButton 附加到 navigationItem.leftBarButtonItems 数组,但这也不起作用(因为 leftBarButtonItems 数组一开始就没有设置)。

我的下一个方法是找到后退按钮并手动将其添加到 leftBarButtonItems 数组,所以我尝试使用 navigationItem.leftBarButtonItems = [self.navigationItem.backBarButtonItem!, editButton],但这只会在 editButton 和左侧之间添加一个 space .没有后退按钮。

如何在不触及后退按钮的情况下添加左栏按钮?有没有比使用 self.navigationController?.popViewControllerAnimated(true) 手动编写新的后退按钮并将其添加到 leftBarButtonItems 数组更优雅的方法?

默认情况下,leftItemsSupplementBackButton 属性 为 false。在这种情况下, 后退按钮未绘制,左侧项目或项目替换它。如果你 希望左边的项目出现在后退按钮之外(而不是它)设置 leftItemsSupplementBackButtontrue

@property(nonatomic) BOOL leftItemsSupplementBackButton

你可以使用这样的东西

navigationItem.leftBarButtonItem = editButton
//or
navigationItem.leftBarButtonItems = [editButton]

self.navigationItem.leftItemsSupplementBackButton = true

这两行就可以了。将 leftItemSupplementBackButton 设置为 true,然后添加 leftBarButtonsItems.

self.navigationItem.leftItemsSupplementBackButton = true
self.navigationItem.leftBarButtonItems = [barButton]