回答
为了把搜索栏到的导航栏的中心:
self.navigationItem.titleView = self.searchBarTop;
为了把搜索栏的左/右侧的导航栏的:
UIBarButtonItem *searchBarItem = [[UIBarButtonItem alloc] initWithCustomView:searchBar];
self.navigationItem.rightBarButtonItem = searchBarItem;
作为的iOS 7中,UISearchDisplayController默认支持此。设置UISearchDisplayController的displaysSearchBarInNavigationBar = YES
可以很容易地工作。
每文档:
中的iOS 7.0开始,您可以通过配置搜索显示控制器的displaysSearchBarInNavigationBar和navigationItem属性使用了导航栏(UINavigationBar的类的实例)的搜索显示控制器。
根据Apple的文档,它看起来像我们不能在titleView中设置searchBar。我对吗?你能告诉我们如何设置searchDisplayController的navigationItem吗?谢谢 – NLemay 2013-09-24 18:01:38
我试过了,但我的搜索栏位于屏幕中间! – 2013-10-05 16:49:33
使用故事板时最简单的方法是将“搜索栏”和“搜索显示控制器”从实用工具区拖出到文档大纲内的当前场景的底部。之后,在viewdidload中添加'self.searchDisplayController.displaysSearchBarInNavigationBar = YES;'。您可能想要在编辑时显示取消按钮或隐藏后退按钮,这可以在委托实施中完成。 – Bohrnsen 2013-10-06 19:59:58
正如一位评论者指出的那样,使用searchDisplayController.displaysSearchBarInNavigationBar = true
最终会隐藏任何现有的左/右栏按钮项目。
我发现了使用iOS7的searchDisplayController
的新属性将searchBar
添加到navigationBar
的两种不同方法。
1)根据笔尖方法
如果您使用的是的.xib,你可以为这个值,不管出于什么原因,在leftBarButtonItem停留在机智设置一个用户定义的运行属性。我没有用rightBarButtonItem测试过它。
2)代码(定时事项)
如果你想在代码来实现,时间似乎无关紧要。看起来您必须先将searchBar
添加到navigationBar
,然后设置您的barButtonItem
。
- (void)viewDidLoad
{
...
self.searchDisplayController.displaysSearchBarInNavigationBar = true;
self.navigationItem.leftBarButtonItem = [UIBarButtonItem new];
...
}
我试过(1)故事板,它崩溃。这个类不是关键的值,它们是关键字displaysSearchBarInNavigationBar。 – 2014-03-13 01:19:36
您可以在StoryBoard中执行此操作,但需要将其设置在搜索显示控制器上,而不是视图控制器上;然而,它并没有在我的测试中保留正确的按钮项,但它确实将搜索栏放在了导航栏中。 – Peter 2014-04-15 20:49:16
您可以在StoryBoard中设置具有引用插座的UIBarButtonItems中使用#2。而不是上面的[UIBarButtonItem new]:'''self.navigationItem.leftBarButtonItem = self.leftButton'''(其中self.leftButton是左按钮的出口)。 – Peter 2014-04-15 20:53:04
查看Apple的UICatalog示例代码。它以三种不同的方式显示如何使用新的UISearchController
:模式,导航栏和导航栏下方。
这些样本帮了我很多。谢谢! – 2017-07-06 10:35:16
- 1. UISearchBar以上导航栏
- 2. iOS 11导航栏中的UISearchBar
- 3. 侧栏导航改为导航栏中的顶部导航栏
- 4. 导航栏上方的导航栏
- 5. 的UISearchBar出屏幕边界时导航栏半透明=假
- 6. 在导航栏中的iPhone导航
- 7. 导航栏中的物品从导航栏中消失
- 8. Bootstrap导航栏:导航栏 - 右
- 9. 居中导航栏
- 10. UISearchBar在导航栏下方,如何使它不在活动时将导航栏向上推?
- 11. Bootstrap导航栏(随顶栏)锚标签导航导航栏后面的内容
- 12. 添加导航抽屉通过替换在导航栏中的导航栏
- 13. Lone导航栏高度与导航控制器中的导航栏高度
- 14. 如何使导航栏像Pulse中的导航栏?
- 15. 如何定位导航栏中的导航栏内容4
- 16. 无法切换导航栏4中的导航栏
- 17. 导航栏中嵌入的UISearchController的UISearchBar:不成为第一响应者
- 18. UIPopover中的导航栏
- 19. 导航栏中的错误?
- 20. Uisplitviewcontroller导航栏
- 21. Django导航栏
- 22. TTThumbView +导航栏
- 23. AngularJS:导航栏
- 24. 在导航栏
- 25. animate导航栏
- 26. 导航栏Android
- 27. 在导航栏
- 28. Bootstrap导航栏
- 29. Bootstrap导航栏
- 30. 导航栏中的多个搜索栏
我有这样的问题,在iPad上,结果显示在嵌入在弹出窗口中的表视图中,而不是原始表视图的框架中。任何解决方案? – Norbert 2013-10-05 08:57:01
如果我这样设置,searchDisplayController不再显示。 'cellForRowAtIndexPath:'方法也不被调用。 使用'searchDisplayController.displaysSearchBarInNavigationBar'工作,但我无法使用它,因为我也支持iOS 6 ... – jdev 2015-03-02 22:57:09
此方法隐藏标题 – Panos 2016-11-08 18:20:29