有谁知道如何在我的导航工具栏的右上角添加两个系统按钮?我知道可以添加自定义按钮,我真的不明白为什么系统按钮也不能这样做。
我真的需要它。我需要一个添加按钮和一个编辑按钮。
编辑以重新排序和删除表行。添加以添加新行。
我不能使用底部工具栏,因为那里有一个标签栏。
有人可以帮帮我吗?
像这样的东西应该可以工作(替换你自己的图像和动作方法):
#define ACTIONEDIT 0
#define ACTIONADD 1
...
UISegmentedControl* segmentedControl = [[UISegmentedControl alloc]
initWithItems: [NSArray arrayWithObjects:
[UIImage imageNamed:@"icon-edit.png"],
[UIImage imageNamed:@"icon-add.png"],
nil]
];
[segmentedControl addTarget:self
action:@selector(segmentAction:)
forControlEvents:UIControlEventValueChanged];
segmentedControl.frame = CGRectMake(0, 0, 90, 30);
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentedControl.momentary = YES;
[segmentedControl setEnabled:YES forSegmentAtIndex:ACTIONEDIT];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]
initWithCustomView:segmentedControl];
...
- (void)segmentAction:(id)sender
{
UISegmentedControl* segCtl = sender;
int action = [segCtl selectedSegmentIndex];
switch (action) {
case ACTIONADD:
[self addToList];
break;
case ACTIONEDIT:
[self editList];
break;
}
}
使用默认导航栏,您只能拥有三个按钮,除非我遗漏了什么。一个在左边,一个在中间,一个在右边。即使您创建了一个较小的按钮并认为您有足够的空间,触摸也会全部注册到同一个按钮(以链接到右侧或左侧为准)。如果你想获得像谷歌导航栏这样的功能,我建议你自己实现它。它真的不会那么困难,而且你会得到你想要的功能。如果您决定这样做,我相信 SO 可以指导您完成困难的部分。
我想知道如果您为 UINavigationItem 使用自定义视图会发生什么:
myViewController.navigationItem.titleView = myCustomView;
我想如果您那里没有按钮,titleView 可能会一直向右扩展。我注意到如果没有右键,标题文本会获得更多空间。
然后,您可以将标签(用于标题)和两个按钮添加到该自定义视图。