首页 文章

将UIBarButtonItem添加到UINav..Controller

提问于
浏览
2

我不确定我在这里失踪了什么 . 我有一个自定义 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 回答

  • 21

    不能在UINavigationController实例上设置 navigationItem ,而是在显示"inside"导航控制器的视图的视图控制器上设置 .

    如果您的控制器本身被推入另一个导航控制器,则在导航控制器上设置self.navigationItem将起作用 .

相关问题