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

时间:2016-08-22 05:57:22

标签: swift swift2 uinavigationbar

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

现在我想在后退按钮旁添加一个“编辑”按钮。我已经在右侧放置了取消分配按钮,因为“#34; Unassign"很长,我宁愿适合左侧后退按钮旁边的编辑按钮。

我知道我可以通过navigationItem.leftBarButtonItem = editButton以编程方式添加条形按钮,但会覆盖后退按钮。

我还尝试将editButton附加到navigationItem.leftBarButtonItems数组,但这也不起作用(因为leftBarButtonItems数组首先没有设置)。

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

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

2 个答案:

答案 0 :(得分:6)

默认情况下,leftItemsSupplementBackButton属性为false。在这种情况下,  未绘制后退按钮,左侧项目或项目将替换它。如果你  希望除了后退按钮(而不是后退按钮)之外还显示左侧项目,将leftItemsSupplementBackButton设置为true

@property(nonatomic) BOOL leftItemsSupplementBackButton

你可以使用这样的东西

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

self.navigationItem.leftItemsSupplementBackButton = true

答案 1 :(得分:0)

这两行可以解决问题。将leftItemSupplementBackButton设置为true,然后添加leftBarButtonsItems

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