views:

945

answers:

2

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???

A: 

I think your code should work (the first one). Please check [bbi release]. I think you are releasing it before, so it was not shown. Please reply me if it works or not ? I am also learning. Thank you.

srikanth rongali
the release makes no difference
mlecho
+1  A: 

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 himself pushed into another navigation controller.

FenchKiss Dev