导航栏中的UISearchBar
如何显示NavigationBar中的UISearchBar?
我无法弄清楚如何做到这一点。
非常感谢您的帮助。
把searchBar放到navigationBar的中心:
self.navigationItem.titleView = self.searchBarTop;
将searchBar放置在navigationBar的左侧/右侧:
UIBarButtonItem *searchBarItem = [[UIBarButtonItem alloc] initWithCustomView:searchBar]; self.navigationItem.rightBarButtonItem = searchBarItem;
从iOS 7开始,UISearchDisplayController默认支持这个function。 设置UISearchDisplayController的displaysSearchBarInNavigationBar = YES
可以很容易的工作。
根据文档:
从iOS 7.0开始,可以通过configurationsearch显示控制器的displaysSearchBarInNavigationBar和navigationItem属性,使用带有导航栏的search显示控制器(UINavigationBar类的实例)。
正如一位评论者指出,使用searchDisplayController.displaysSearchBarInNavigationBar = true
结束隐藏任何现有的左/右栏button项目。
我已经find了两种不同的方法,使用searchDisplayController上的searchDisplayController
新属性将searchBar
添加到navigationBar
searchDisplayController
。
1)基于笔尖的方法
如果您使用的是.xib,则可以为该值设置用户定义的运行时属性,无论出于何种原因,leftBarButtonItem都保持完整。 我没有用rightBarButtonItemtesting过。
2)代码(定时问题)
如果你想在代码中实现,时间似乎很重要。 看起来你必须searchBar
添加到navigationBar
,然后设置你的barButtonItem
。
- (void)viewDidLoad { ... self.searchDisplayController.displaysSearchBarInNavigationBar = true; self.navigationItem.leftBarButtonItem = [UIBarButtonItem new]; ... }
看看苹果的UICatalog示例代码。 它以三种不同的方式显示了如何使用新的UISearchController
:模式,导航栏和导航栏下方。