整个应用程序使用相同的 UISearchBar?
Posted
技术标签:
【中文标题】整个应用程序使用相同的 UISearchBar?【英文标题】:Same UISearchBar for entire app? 【发布时间】:2014-01-08 03:18:13 【问题描述】:我看到很多应用都有一个始终位于应用顶部的通用搜索栏。我在一个视图控制器中实现了UISearchBar
和UITableView
。我想在我的应用程序的其他视图控制器上拥有相同的搜索栏。我如何将这些其他UISearchBars
链接到我已经创建的那个?即,如何配置这些其他 UISearchBars
以便它们返回相同的搜索结果并链接到相同的 UITableView
?
【问题讨论】:
【参考方案1】:您可能需要嵌套视图控制器。
定义一个“顶视图控制器”来管理一个包含搜索栏的“顶视图”,并将您的(表格)视图添加到顶视图(在顶视图上使用-addSubview:
)和相关的视图控制器到顶部视图控制器(在顶部 VC 及其自身上使用 -addChildViewController:
)。
在 Interface Builder 中,您可以定义一个顶视图,并在其中定义一个“容器视图”。然后系统处理子视图和子视图控制器的插入。
通过定义良好的视图控制器层次结构,您可以使您的应用设计更加合乎逻辑和简洁。我建议在深入编码之前花一些时间研究一个好的层次结构。
最后一点:UISearchDisplayController
是一个对象(显然不是视图控制器),它在视图控制器的视图上方叠加了一个搜索栏。您也许可以简单地将它应用到最顶层的视图控制器(始终可见的视图控制器,如导航控制器)之上。值得研究一下,如果你还没有。 ;-)
一个例子
视图控制器层次结构
XYZTopViewController
(管理XYZTopView
)
UINavigationController
(管理 Apple 定义的私有导航视图层次结构)
XYZFirstPageViewController
(管理XYZFirstPageView
)(“根”视图控制器)
XYZSecondPageViewController
(管理XYZSecondPageView
)(在需要时由导航控制器推送)
查看层次结构
XYZTopView
UISearchBar
(Apple 定义的私有导航视图层次结构)
XYZFirstPageView
(属于第一页/屏幕的视图层次结构)
【讨论】:
【参考方案2】:How to show a uiview alway on top?因为每个应用程序只有一个窗口,而视图没有 级别,您必须确保视图保持在层次结构的顶部, 无论。一种相对简单的方法是将其直接添加到 界面其余部分(导航控制器)上方的窗口:
在 applicationDidLaunch 中:
// After the main navigation controller or tab controller has been added
// either programmatically or in the xib:
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0,70,320,44)];
[self.window addSubview:searchBar];
【讨论】:
以上是关于整个应用程序使用相同的 UISearchBar?的主要内容,如果未能解决你的问题,请参考以下文章
Swift iOS 8+ UISearchBar图标,占位符和文本居中
TableView Cell -> UISearchBar : 对数据进行排序,其中关键字匹配最多的记录应先显示,然后再向最少
选择标签栏项目时激活 UISearchBar - 帮助还是阻碍?