我见过很多具有通用搜索栏的应用程序始终位于应用程序的顶部。我在一个视图控制器中实现了UISearchBar
和UITableView
。我想在我的应用程序中的其他视图控制器上使用相同的搜索栏。如何将其他UISearchBars
链接到我已创建的UISearchBars
?即,如何配置这些其他UITableView
,以便它们返回相同的搜索结果并链接到同一个{{1}}?
答案 0 :(得分:2)
因为每个应用程序只有一个窗口,而视图没有 级别,你必须确保视图保持在层次结构的顶部, 无论。一种相对简单的方法是将其直接添加到 界面其余部分(导航控制器)上方的窗口:
在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];
答案 1 :(得分:2)
嵌套视图控制器可能就是您所需要的。
定义一个“顶视图控制器”,用于管理包含搜索栏的“顶视图”,并将您的(表格)视图添加到顶视图(使用顶视图上的-addSubview:
)和关联的视图控制器( s)到顶视图控制器(使用顶部VC中的-addChildViewController:
并且自身)。
在Interface Builder中,您可以定义一个顶视图,在其中定义一个“容器视图”。系统然后处理子视图和子视图控制器的插入。
通过定义良好的视图控制器层次结构,您可以使您的应用程序设计更加合理和干净。我建议花些时间研究一个好的层次结构,然后再进行编码。
最后一点:UISearchDisplayController
是一个对象(显然不是视图控制器),它在视图控制器的视图上方叠加了一个搜索栏。您可能只需将其直接应用于最顶层视图控制器(始终可见的控制器,如导航控制器)上方。如果你还没有,那就值得研究一下。 ; - )
XYZTopViewController
(管理XYZTopView
)
UINavigationController
(管理Apple定义的私有导航视图层次结构)
XYZFirstPageViewController
(管理XYZFirstPageView
)(“根”视图控制器)XYZSecondPageViewController
(管理XYZSecondPageView
)(当您需要时由导航控制器推送)XYZTopView
UISearchBar
XYZFirstPageView