Adding back button to navigation bar

后端 未结 3 1196
终归单人心
终归单人心 2020-12-03 09:02

I\'ve added a navigation bar to a UIViewController. It is displayed from another UIViewController only. I\'d like to have a left side back button that is shaped similar to

相关标签:
3条回答
  • 2020-12-03 09:22

    If you're using a navigation controller:

    MyViewController *_myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
    [[self navigationController] pushViewController:_myViewController animated:YES];
    UIBarButtonItem *_backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleDone target:nil action:nil];
    self.navigationItem.backBarButtonItem = _backButton;
    [_backButton release], _backButton = nil;
    [_myViewController release], _myViewController = nil;
    

    If you're not using a navigation controller, look into the Three20 style components to make custom bar buttons.

    0 讨论(0)
  • 2020-12-03 09:22

    Another approach to solve this problem is to set the items property for the navigation bar instead of consecutively pushing the bar items into nav bar stack:

    //Define myFrame based on your needs
    let navigationBar = UINavigationBar(frame: myFrame)
    let backItem = UINavigationItem(title: "Back")
    let topItem = UINavigationItem(title: "My Title")
    navigationBar.setItems([backItem,topItem], animated: false)
    
    0 讨论(0)
  • 2020-12-03 09:34

    I have done it the following way

    In viewDidLoad Method I have this code:

    UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 41)];
        navBar.delegate = self;
    
        UINavigationItem *backItem = [[UINavigationItem alloc] initWithTitle:@"Back"];
        [navBar pushNavigationItem:backItem animated:NO];
        [backItem release];
    
        UINavigationItem *topItem = [[UINavigationItem alloc] initWithTitle:@"Your Title"];
        [navBar pushNavigationItem:topItem animated:NO];
        topItem.leftBarButtonItem = nil;
        [topItem release];
    
        [self.view addSubview:navBar];
        [navBar release];
    

    Then add conformity to UINavigationBarDelegate protocol in the header and implement the delegate method this way:

    - (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item
    {
        //if you want to dismiss the controller presented, you can do that here or the method btnBackClicked
    
        return NO;
    }
    
    0 讨论(0)
提交回复
热议问题