我在视图控制器中以编程方式创建了导航栏和标签。现在我想添加一个“完成”按钮,但似乎找不到使用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;
最后一部分显然不起作用......
感谢您的帮助!
答案 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上
查看文档以获取更多详细信息: