【问题标题】: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】:
您可以隐藏导航栏,而不是显示导航栏的图像,然后在其上放置按钮:))