如何在UINavigationItem的右侧显示UISearchBar?

问题描述:

我想显示一个UISearchBar来代替UINavigationItem右侧显示的按钮。我正在使用此代码:如何在UINavigationItem的右侧显示UISearchBar?

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UISearchBar *searchBar = [[UISearchBar alloc] init]; 
    UIBarButtonItem *navRight = [[UIBarButtonItem alloc] initWithCustomView:searchBar]; 
    [[self navigationItem] setRightBarButtonItem:navRight]; 

    [searchBar release]; 
    [navRight release]; 
} 

但是,显示的搜索栏只有几个像素宽。我需要把它扩大。

我该怎么做呢?这是否可能?

+0

您可以通过使用CGFrame定义一个框架来更改UIBarButtonItem的宽度,或者如果可能的话添加使用IB – Robin 2011-01-27 07:21:13

您需要在某个时刻设置UISearchBar的帧。

e.x.

UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 200, 20)]; 

编辑:关于你下UISearchBar看到UISearchBar

按钮-Y的事情下的按钮式的神器实际上是UISearchBar的背景元素,搜索没有结果酒吧重叠UIBarButtonItem。由于似乎没有一种很好的方法可以隐藏这个(我希望有人可以一起来纠正我),所以我只能指出你的方向,即伴随着SDK版本依赖的常见危险hack,不雅,并有可能导致更多的头痛。

编辑2:另一个潜在的解决方案

您还可以设置您的UISearchBar的框架的高度,以44(导航栏的高度),然后背景应该与导航栏很好地融为一体。基于this最近看到的SO帖子。

+0

谢谢!堆栈溢出岩石。有什么办法隐藏它下面的按钮? – Ovesh 2011-01-27 07:31:25