对UINavigationController进行子类化以获得rightbarbuttonitem和leftbarbuttonitem的额外图标

时间:2011-11-09 23:13:50

标签: iphone uiviewcontroller uinavigationcontroller

我正在查看其他一些能够在leftBarButtonItem和rightBartonItem中为UINavigationController添加额外图标的iPad应用程序。以下是来自nngroup.com的图片:enter image description here

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

2 个答案:

答案 0 :(得分:0)

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

示例实现是这样的。

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];

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

答案 1 :(得分:0)

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