导航栏上有1个以上的rightBarButtonItem

24 navigation iphone

我想在导航栏上有两个rightBarButtonItems.一个用于编辑,另一个用于添加.

显然我无法使用Interface Builder.

有人知道如何以编程方式进行吗?谢谢!

jro*_*yce 68

现在包含在iOS 5中,名为rightBarButtonItems,注意复数

这是来自apple docs的文本:

rightBarButtonItems

当接收器是顶部导航项时,一组自定义栏按钮项目显示在导航栏的右侧.

@property(非原子,复制)NSArray*rightBarButtonItems

讨论

此数组可以包含0个或更多条形按钮项目,以显示在
导航栏的右侧.项目从右到左显示的顺序与它们在数组中显示的顺序相同.因此,数组中的第一项是最右边的项,其他项添加到前一项的左侧.

如果没有足够的空间显示数组中的所有项目,则不会显示与标题视图(如果存在)或条形图左侧的按钮重叠的项目
.

也可以使用rightBarButtonItem属性设置数组中的第一项.

在UINavigationBar.h中声明

以下是我在导航栏右侧实现搜索图标和编辑图标的方法:

UIBarButtonItem *searchButton         = [[UIBarButtonItem alloc]
                                         initWithBarButtonSystemItem:UIBarButtonSystemItemSearch
                                         target:self
                                         action:@selector(searchItem:)];

UIBarButtonItem *editButton          = [[UIBarButtonItem alloc] 
                                         initWithBarButtonSystemItem:UIBarButtonSystemItemEdit
                                         target:self action:@selector(editItem:)];

self.navigationItem.rightBarButtonItems =
[NSArray arrayWithObjects:editButton, searchButton, nil];
Run Code Online (Sandbox Code Playgroud)


小智 37

下面是一个如何添加两个按钮作为右键按钮的示例.下面的代码创建了一个包含向上和向下箭头按钮的分段控件,然后将其添加为导航右侧按钮的自定义视图:

UISegmentedControl* segmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray array]];
    [segmentedControl setMomentary:YES];
    [segmentedControl insertSegmentWithImage:[UIImage imageNamed:@"icon-triangle-up.png"] atIndex:0 animated:NO];
    [segmentedControl insertSegmentWithImage:[UIImage imageNamed:@"icon-triangle-down.png"] atIndex:1 animated:NO];
    segmentedControl.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
    [segmentedControl addTarget:self action:@selector(segmentedAction:) forControlEvents:UIControlEventValueChanged];

    UIBarButtonItem * segmentBarItem = [[UIBarButtonItem alloc] initWithCustomView: segmentedControl];
    self.navigationItem.rightBarButtonItem = segmentBarItem;
Run Code Online (Sandbox Code Playgroud)


Rog*_*Rog 2

导航栏是一个 UIView,因此您可以简单地创建一个常规 UIButton 并将其作为子视图添加到导航栏。

设置相对于导航栏的框架。如果您希望它看起来与内置按钮一模一样,您可能必须自己生成图形,因为它们不会暴露给 SDK AFAIK。