Persistent UIBarButtonItem in UIToolbar?

后端 未结 3 1008
萌比男神i
萌比男神i 2020-12-15 14:40

I\'ve been developing an iPhone app that uses a UIToolbar (in the context of a UINavigationController) to display a small status icon at the bottom of the screen. The toolba

相关标签:
3条回答
  • 2020-12-15 15:15

    As you push new views onto your navigation controller the views in the toolbar will be replaced with the views from the toolbar of the view on the top of the stack.

    Even if you have a static view (a view that does not change when you push a new controller), the view will still appear to be new because of the animation apple includes when you push a new view controller onto the stack.

    0 讨论(0)
  • 2020-12-15 15:23

    Instead of using the navigation controller's toolbar, add one directly to the window and resize the navigation controller's view's frame to avoid it. That single global toolbar will then always be visible.

    If you're using the Navigation-based Application template, and are using Interface Builder, the following steps should do it:

    1. Open up your app delegate's .h file.
    2. Add an IBOutlet UIToolbar * toolbar; to the app delegate's instance variables.
    3. Switch to the .m file.
    4. Find the line that reads [window addSubview:[navigationController view]]; and add after it:
      CGRect frame = navigationController.view.frame;
      frame.size.height -= toolbar.frame.size.height;
      navigationController.view.frame = frame;
    5. Add code to release toolbar in the -dealloc method.
    6. Open MainWindow.xib.
    7. Open the window.
    8. Drag a toolbar onto the bottom of the window.
    9. Connect the toolbar to the app delegate's toolbar outlet
    10. Now set up the toolbar—add whatever items you need to it, then create whatever outlets and actions you need in the app delegate and connect them.

    Since the toolbar is part of the window, not part of the navigation controller, the navigation controller shouldn't touch it.

    0 讨论(0)
  • 2020-12-15 15:28

    I found this works for me:

    CGFloat height = [self.toolbar frame].size.height;
    CGRect rootBounds = self.window.rootViewController.view.bounds;
    CGRect frame = CGRectMake(0, CGRectGetHeight(rootBounds) - height, CGRectGetWidth(rootBounds), height);   
    [self.toolbar setFrame:frame];
    [self.navigationController.view addSubview:self.toolbar];
    
    0 讨论(0)
提交回复
热议问题