【问题标题】:Subclassing UINavigationController to have extra icons for rightbarbuttonitem and leftbarbuttonitem子类化 UINavigationController 为 rightbarbuttonitem 和 leftbarbuttonitem 提供额外的图标
【发布时间】:2011-11-09 23:13:50
【问题描述】:

我正在寻找其他一些 iPad 应用程序,它们能够为 UINavigationController 的 leftBarButtonItem 和 rightBarButtonItem 添加额外的图标。这是一张来自 nngroup.com 的照片:

为了做这样的事情,他们是继承 UINavigationController 还是为它添加一个类别?还是他们在做不同的事情?我只是想要如何做这样的事情的一般方法,但不需要所有代码,因为我确信这是很多工作。谢谢。

【问题讨论】:

    标签: iphone uiviewcontroller uinavigationcontroller


    【解决方案1】:

    您可以创建一个工具栏对象并将按钮添加到该工具栏,然后将右侧栏按钮项或左侧栏按钮项的自定义视图设置为此工具栏。

    一个示例实现是这样的。

    UIToolbar * toolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0,0,160, 44.5)];
    
    UIBarButtonItem *spacer = [[UIBarButtonItem alloc]
                              initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
                               target:nil
                               action:nil];
    [buttons addObject:spacer];
    [spacer release];
    
    UIBarButtonItem * deleteButton = [[UIBarButtonItem alloc]
                                  initWithTitle:@"Delete"
                                  style:UIBarButtonItemStyleBordered
                                  target:self
                                  action:@selector(deletePressed)];
    // Button style is the default style
    [buttons addObject:deleteButton];
    [deleteButton release];
    
    
    UIBarButtonItem * barItem = [[UIBarButtonItem alloc] initWithTitle:@"Logout" style:UIBarButtonItemStyleBordered
                                                                target:[Y3AppDelegate mainApplicationInstance] action:@selector(logout)];
    
    
    [buttons addObject:barItem];
    [barItem release];
    
    // put the buttons in the toolbar and release them
    [toolbar setItems:buttons animated:YES];
    [buttons release];
    
    // place the toolbar into the navigation bar as Right Button item
    self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc]
                                              initWithCustomView:toolbar] autorelease];
    [toolbar release];
    

    这里要注意的一点是,您可能必须更改工具栏的色调以匹配导航栏的色调。希望这个答案对您有所帮助。

    【讨论】:

      【解决方案2】:

      您可以隐藏导航栏,而不是显示导航栏的图像,然后在其上放置按钮:))

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-20
        • 1970-01-01
        • 2018-03-30
        相关资源
        最近更新 更多