我不确定我在这里失踪了什么 . 我有一个自定义 UINavigationController
,我试图添加一个持久的 UIBarButtonItem
到栏 .
-(void)viewDidLoad
{
self.navigationBar.barStyle = UIBarStyleBlack;
UIBarButtonItem *bbi = [[UIBarButtonItem alloc] initWithTitle:@"Nope..."
style:UIBarButtonItemStyleBordered
target:self
action:@selector(goBack:)];
self.navigationItem.leftBarButtonItem =bbi;
[bbi release];
}
-(void)goBack:(id)sender
{
NSLog(@"go back now");
}
我在这里失踪了什么? - 顺便说一句,我不想/不会使用IB .
更新:目前这是我能得到的最接近的:
-(void)viewDidLoad
{
self.navigationBar.barStyle = UIBarStyleBlack;
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 20, 320, 44)];
navBar.barStyle = UIBarStyleBlack;
UINavigationItem *navItem = [[UINavigationItem alloc] initWithTitle:@"Currently Playing..."];
[navBar pushNavigationItem:navItem animated:NO];
UIBarButtonItem *editButton = [[UIBarButtonItem alloc] initWithTitle:@"Close" style:UIBarButtonItemStyleBordered target:self action:@selector(goBack:)];
navItem.rightBarButtonItem = editButton;
[self.view addSubview:navBar];
[editButton release];
[navItem release];
[navBar release];
[super viewDidLoad];
}
可怕的是我必须将一个完整的导航栏添加到已经有导航栏的 UINavigationController
....如果我尝试使用现有的,我会收到此错误:
'NSInternalInconsistencyException', reason: 'Cannot call pushNavigationItem:animated: directly on a UINavigationBar managed by a controller.'
....真???
1 回答
不能在UINavigationController实例上设置
navigationItem
,而是在显示"inside"导航控制器的视图的视图控制器上设置 .如果您的控制器本身被推入另一个导航控制器,则在导航控制器上设置self.navigationItem将起作用 .