2010-03-23 27 views

回答

289

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; 
+1

我得到的样式警告:参数 - >警告:语义问题:从枚举类型“UIBarButtonSystemItem”隐式转换到不同的枚举类型“UIBarButtonItemStyle” – pojo 2011-10-12 20:19:37

+3

这应该是initWithBarButtonSystemItem:UIBarButtonSystemItemDone避免了警告。 – JordanC 2011-12-26 09:55:31

+2

在这个例子中,我不明白“酒吧”来自哪里。什么是UINavigationItem的默认顶栏属性? – aneuryzm 2012-06-26 13:57:55

20

的回答都不错,但我想割肉出来多带几个小窍门:

如果您想要修改后退按钮的标题(箭头-Y从导航栏的左侧看),您必须在前一个视图控制器中执行此操作,而不是它将显示的视图控制器。这就好像在说:“嘿,如果你把另一个视图控制器放在这个视图控制器的顶部,就把后面的按钮叫做”Back“(或其他),而不是默认的。”

如果要在特殊状态期间隐藏后退按钮(例如显示UIPickerView时),请使用self.navigationItem.hidesBackButton = YES;并记住在离开特殊状态时将其设回。

如果你想显示特殊符号按钮中的一个,使用形式initWithBarButtonSystemItem:target:action与像UIBarButtonSystemItemAdd

值记住,符号的意义是你的,但要小心的人机界面指南。使用UIBarButtonSystemItemAdd来表示删除一个项目可能会让你的应用程序被拒绝。

11

将自定义按钮添加到导航栏(使用buttonItem的图像并指定操作方法(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]; 
7

下面的示例将在右侧的导航栏上显示一个标题为“联系人”的按钮。它的动作从视图控制器调用名为“contact”的方法。没有这条线,右边的按钮是不可见的。

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Contact" 
                      style:UIBarButtonItemStylePlain target:self action:@selector(contact:)];; 

enter image description here

2

为什么不使用下列内容: (从Draw custom Back button on iPhone Navigation Bar

// 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

在斯威夫特2,你会怎么做:

let rightButton: UIBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Done, target: nil, action: nil) 
self.navigationItem.rightBarButtonItem = rightButton 
0

SWIFT 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) 
    } 
相关问题