2

我不确定我在这里缺少什么。我有一个习惯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:animated:直接在控制器管理的 UINavigationBar 上。'

....真的???

4

1 回答 1

22

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

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

于 2010-03-29T09:04:17.880 回答