我可以完全免费添加一个UIBarButtonItem吗?

时间:2011-07-18 21:27:06

标签: iphone objective-c xcode uinavigationbar uinavigationitem

我在视图控制器中以编程方式创建了导航栏和标签。现在我想添加一个“完成”按钮,但似乎找不到使用IB的方法....有没有办法做到这一点?

这是我的视图控制器的viewDidLoad:

//Adding navBar programmatically 
CGFloat width = self.view.frame.size.width;
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0,0,width,52)];
navBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
[self.view addSubview:navBar];

//Adding label to navBar programmatically 
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10,2,width-20,14)];
label.autoresizingMask = UIViewAutoresizingFlexibleWidth;
label.text = @"TITLE";
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont systemFontOfSize:22];
label.shadowOffset = CGSizeMake(1,1);
label.textColor = [UIColor whiteColor];
label.textAlignment = UITextAlignmentCenter;
[navBar addSubview:label];

//Adding back button to navBar programmatically 
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(dismissView:)];
self.navigationItem.leftBarButtonItem = rightButton;   

最后一部分显然不起作用......

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

为什么不使用UIToolBar

要向UINavigationBar添加按钮,您需要创建UINavigationItem。如果您使用UINavigationBar作为UINavigationController的一部分(通常情况下),则会自动完成,作为独立视图,您必须自己完成此操作。

UINavigationItem *item = [[[UINavigationItem alloc] initWithTitle:@""] autorelease];
item.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(dismissView:)] autorelease];
[navBar setItems:[NSArray arrayWithObject:item] animated:NO];

答案 1 :(得分:0)

只有在navigationcontroller中推送viewcontroller时才会使用navigationItem

在您的情况下,您需要使用

-pushNavigationItem:动画:

在UINavigationBar上

查看文档以获取更多详细信息:

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UINavigationBar_Class/Reference/UINavigationBar.html