导航栏中的UISearchBar

时间:2011-02-23 18:40:03

标签: ios uinavigationbar uisearchbar

如何在NavigationBar中显示UISearchBar?

我无法弄清楚如何做到这一点。

非常感谢您的帮助。

5 个答案:

答案 0 :(得分:83)

将searchBar放入导航栏的中心:

self.navigationItem.titleView = self.searchBarTop;

将searchBar放在导航栏的左/右侧:

UIBarButtonItem *searchBarItem = [[UIBarButtonItem alloc] initWithCustomView:searchBar];
self.navigationItem.rightBarButtonItem = searchBarItem;

答案 1 :(得分:20)

从iOS 7开始,UISearchDisplayController默认支持此功能。设置UISearchDisplayController的displaysSearchBarInNavigationBar = YES以使其轻松工作。

根据文件:

  

从iOS 7.0开始,您可以通过配置搜索显示控制器的displaysSearchBarInNavigationBar和navigationItem属性,将搜索显示控制器与导航栏(UINavigationBar类的实例)配合使用。

答案 2 :(得分:12)

正如一位评论者指出的那样,使用searchDisplayController.displaysSearchBarInNavigationBar = true最终会隐藏任何现有的左/右栏按钮项。

我发现在searchBar上使用iOS7的新属性向navigationBar添加searchDisplayController的两种不同方式。

1)基于笔尖的方法

如果您使用的是.xib,则可以为此值设置用户定义的运行时属性,无论出于何种原因,leftBarButtonItem都会保持原状。我没有用rightBarButtonItem测试它。

enter image description here

2)代码(时间问题)

如果你想在代码中实现,时间似乎很重要。您似乎必须先将searchBar添加到navigationBar,然后设置barButtonItem

- (void)viewDidLoad
{
    ...
    self.searchDisplayController.displaysSearchBarInNavigationBar = true;
    self.navigationItem.leftBarButtonItem = [UIBarButtonItem new];
    ...
}

答案 3 :(得分:11)

查看Apple的UICatalog示例代码。它以三种不同的方式显示了如何使用新的UISearchController:模态,导航栏和导航栏下方。

答案 4 :(得分:0)