如何在NavigationBar中显示UISearchBar?
我无法弄清楚如何做到这一点。
非常感谢您的帮助。
答案 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测试它。
2)代码(时间问题)
如果你想在代码中实现,时间似乎很重要。您似乎必须先将searchBar
添加到navigationBar
,然后设置barButtonItem
。
- (void)viewDidLoad
{
...
self.searchDisplayController.displaysSearchBarInNavigationBar = true;
self.navigationItem.leftBarButtonItem = [UIBarButtonItem new];
...
}
答案 3 :(得分:11)
查看Apple的UICatalog示例代码。它以三种不同的方式显示了如何使用新的UISearchController
:模态,导航栏和导航栏下方。
答案 4 :(得分:0)