Answers:
在rightbutton
上设置的示例代码NavigationBar
。
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone target:nil action:nil];
UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"Title"];
item.rightBarButtonItem = rightButton;
item.hidesBackButton = YES;
[bar pushNavigationItem:item animated:NO];
但通常情况下,您会有一个NavigationController
,使您可以编写:
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone target:nil action:nil];
self.navigationItem.rightBarButtonItem = rightButton;
[rightbutton release]
在ARC下进行调用(在撰写此评论时还没有出现)。
上面的答案很好,但是我想补充一些技巧:
如果要修改后退按钮的标题(导航栏左侧的箭头Y箭头),则必须在PREVIOUS视图控制器中进行操作,而不是将其显示的按钮。这就像在说“嘿,如果您将另一个视图控制器推到该视图控制器之上,则将后退按钮称为“后退”(或其他按钮),而不是默认按钮。
如果要在特殊状态下(例如显示UIPickerView时)隐藏“后退”按钮,请使用 self.navigationItem.hidesBackButton = YES;
,请在离开特殊状态时并记住将其重新设置。
如果要显示特殊的符号按钮之一,请使用以下形式 initWithBarButtonSystemItem:target:action
具有以下值UIBarButtonSystemItemAdd
请记住,该符号的含义取决于您,但请注意《人机界面指南》。使用UIBarButtonSystemItemAdd表示删除项目可能会使您的应用程序被拒绝。
将自定义按钮添加到导航栏(按钮项目的图像并指定操作方法(void)openView {}和)。
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0, 0, 32, 32);
[button setImage:[UIImage imageNamed:@"settings_b.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(openView) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *barButton=[[UIBarButtonItem alloc] init];
[barButton setCustomView:button];
self.navigationItem.rightBarButtonItem=barButton;
[button release];
[barButton release];
在Swift 2中,您可以执行以下操作:
let rightButton: UIBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Done, target: nil, action: nil)
self.navigationItem.rightBarButtonItem = rightButton
(不是重大更改)在Swift 4/5中,它将是:
let rightButton: UIBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItem.Style.done, target: nil, action: nil)
self.navigationItem.rightBarButtonItem = rightButton
为什么不使用以下内容:(从iPhone导航栏上的“绘制自定义后退”按钮)
// Add left
UINavigationItem *previousItem = [[UINavigationItem alloc] initWithTitle:@"Back title"];
UINavigationItem *currentItem = [[UINavigationItem alloc] initWithTitle:@"Main Title"];
[self.navigationController.navigationBar setItems:[NSArray arrayWithObjects:previousItem, currentItem, nil] animated:YES];
// set the delegate to self
[self.navigationController.navigationBar setDelegate:self];
迅捷3
let cancelBarButton = UIBarButtonItem(title: "Cancel", style: .done, target: self, action: #selector(cancelPressed(_:)))
cancelBarButton.setTitleTextAttributes( [NSFontAttributeName : UIFont.cancelBarButtonFont(),
NSForegroundColorAttributeName : UIColor.white], for: .normal)
self.navigationItem.leftBarButtonItem = cancelBarButton
func cancelPressed(_ sender: UIBarButtonItem ) {
self.dismiss(animated: true, completion: nil)
}