zoukankan      html  css  js  c++  java
  • ios navigationcontroller add multi navigationItem

    http://www.mattdipasquale.com/blog/2010/11/02/how-to-add-multiple-uibarbuttonitems-to-uinavigationbar/

    实现这种效果

    How to Add Multiple UIBarButtonItems to UINavigationBar

    Posted: 02 Nov 2010

    Here's how to do it for iOS 5+.

    - (void)viewDidLoad {
        [super viewDidLoad];
    
        // Create the refresh, fixed-space (optional), and profile buttons.
        UIBarButtonItem *refreshBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refresh:)];
    
        //    // Optional: if you want to add space between the refresh & profile buttons
        //    UIBarButtonItem *fixedSpaceBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
        //    fixedSpaceBarButtonItem.width = 12;
    
        UIBarButtonItem *profileBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Profile" style:UIBarButtonItemStylePlain target:self action:@selector(goToProfile)];
        profileBarButtonItem.style = UIBarButtonItemStyleBordered;
    
        self.navigationItem.rightBarButtonItems = @[profileBarButtonItem, /* fixedSpaceBarButtonItem, */ refreshBarButtonItem];
    }



    The above only works for iOS 5+.

    I recommend only supporting iOS 5+ because making your app better for iOS 5+ is more valuable than supporting iOS < 5. Trust me.

    But, if you must support iOS < 5, replace the last line of -viewDidLoad above with the code below.

        // Add the buttons to the right of the navigation bar.
    #if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_5_0 // iOS Deployment Target
        self.navigationItem.rightBarButtonItems = @[profileBarButtonItem, /* fixedSpaceBarButtonItem, */ refreshBarButtonItem];
    #else
        if ([self.navigationItem respondsToSelector:@selector(rightBarButtonItems)]) {
            self.navigationItem.rightBarButtonItems = @[profileBarButtonItem, /* fixedSpaceBarButtonItem, */ refreshBarButtonItem];
        } else {
            // Support iOS < 5.0: by first adding the buttons to a toolbar.
            // Note: You could also do this by creating two UIButtons, both with the same custom background image as a UIBarButtonItem.
            //       Give the refresh button the refresh arrow as its image and the profile button the title @"Profile".
            //       You can get Apple's images for the UIBarButtonItem background and the refresh arrow by monkey patching -[UIImage imageNamed:] and/or other similar methods to save each image to a file on disk.
            //       Then, run your app in the simulator or on your device, and the files will automatically appear where you programmed to save them.
            //       You may also find these images in Apple's resources, e.g., by running the following command in Terminal `find /Applications/Xcode.app/ -name *.png`
            //       Otherwise, you can make these images yourself.
            UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 103.0f, 44.01f)]; // 44.01 shifts it up 1px for some reason
            toolBar.tintColor = [UIColor colorWithWhite:0.305f alpha:0.0f]; // closest I could get by eye to black, translucent style.
            // anyone know how to get it perfect?
            toolBar.barStyle = -1; // clear background
            [toolBar setItems:@[refreshBarButtonItem, /* fixedSpaceBarButtonItem, */ profileBarButtonItem] animated:NO];
            self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:toolBar];
        }
    #endif
  • 相关阅读:
    OCP-052考试题库汇总(35)-CUUG内部解答版
    OCP-052考试题库汇总(34)-CUUG内部解答版
    018 ThreadLocal实现线程安全
    017 无锁与CAS
    016 原子类
    015 可见性问题与volatile
    014 锁重入
    013 synchronized的优化
    012 内置锁和synchronized
    011 线程安全性问题
  • 原文地址:https://www.cnblogs.com/zhangjl/p/3759286.html
Copyright © 2011-2022 走看看