导航栏中的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 :模式,导航栏和导航栏下方。