How to add a global right bar button (UINavigationController) in Three20's AppDelegate

前端 未结 2 620
余生分开走
余生分开走 2021-01-07 13:52

I want to add a global right bar button in the global AppDelegate so all my view controllers will have this button automatically.

I added in the AppDelegate

相关标签:
2条回答
  • 2021-01-07 14:19

    Well, I'm not sure you can do it in your way, because UINavigatorController always uses the buttons from the view controller that is currently displayed, and not from the top / root controller.

    What you can do is to subclass TTViewController with a new view controller and set your left bar button item.

    ///////////////////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////
    @implementation BaseViewController
    
    
    ///////////////////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////
    #pragma mark -
    #pragma mark UIViewController
    
    
    
    ///////////////////////////////////////////////////////////////////////////////////////////////////
    - (void)viewDidLoad {
      [super viewDidLoad];
    
    
      self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Test", @"") 
                                                                                style:UIBarButtonItemStyleBordered target:self action:@selector(showTest)] autorelease];
    }
    

    and then you should extend all your view controllers from this base controller, which contains the right navigation bar item

    0 讨论(0)
  • 2021-01-07 14:20

    What you need to do is to tap into the navigation controller you wish to hook into. then you can implement UINavigationControllerDelegate (each navigation controller has a delegate property) which will give you these events:

    // Called when the navigation controller shows a new top view controller via a push, pop or setting of the view controller stack.
    - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated;
    - (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated;
    

    You can implement

    - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated;

    and put your right button in place.

    0 讨论(0)
提交回复
热议问题