将 UIBarButtonItem 添加到 UINav..Controller [英] Adding UIBarButtonItem to UINav..Controller

查看:19
本文介绍了将 UIBarButtonItem 添加到 UINav..Controller的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不确定我在这里缺少什么.我有一个自定义 UINavigationController 并且我正在尝试将持久性 UIBarButtonItem 添加到栏.

<上一页>-(void)viewDidLoad{self.navigationBar.barStyle = UIBarStyleBlack;UIBarButtonItem *bbi = [[UIBarButtonItem alloc] initWithTitle:@"Nope..."样式:UIBarButtonItemStyleBordered目标:自己动作:@selector(goBack:)];self.navigationItem.leftBarButtonItem =bbi;[bbi 发布];}-(void)goBack:(id)sender{NSLog(@"现在回去");}

我在这里错过了什么?- 顺便说一句,我不想​​/不会使用 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:@"正在播放..."];[navBar pushNavigationItem:navItem 动画:NO];UIBarButtonItem *editButton = [[UIBarButtonItem alloc] initWithTitle:@"Close" style:UIBarButtonItemStyleBordered target:self action:@selector(goBack:)];navItem.rightBarButtonItem = 编辑按钮;[self.view addSubview:navBar];;[导航项发布];[导航栏发布];[超级视图DidLoad];}

很糟糕,我必须将整个导航栏添加到已经有导航栏的 UINavigationController....如果我尝试使用现有的,我会收到此错误:

<上一页>'NSInternalInconsistencyException',原因:'无法调用 pushNavigationItem:动画:直接在控制器管理的 UINavigationBar 上.'

....真的吗???

解决方案

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

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

i am not sure what i am missing here. I Have a custom UINavigationController and i am trying to add a persistant UIBarButtonItem to the bar.

-(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");
}

what am i missing here? - BTW, i do not want to/ will not use IB.

UPDATE: Currently this is the closest i can get:

-(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];
}

It's terrible i have to add an entire navbar to a UINavigationController that already has a navbar....if i try to use the existing, i get this error:

'NSInternalInconsistencyException', reason: 'Cannot call pushNavigationItem:animated: directly on a UINavigationBar managed by a controller.'

....really???

解决方案

navigationItem must not be set on the UINavigationController instance but on the view controller of the view which is displayed "inside" the navigation controller.

Setting self.navigationItem on your navigation controller would work if your controller was itself pushed into another navigation controller.

这篇关于将 UIBarButtonItem 添加到 UINav..Controller的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆