相同的UISearchBar整个应用程序?
我看到很多应用程序都有一个通用search栏,始终保持在应用程序的顶部。 我已经在一个视图控制器中使用UITableView
实现了一个UISearchBar
。 我想在我的应用程序中的其他视图控制器上具有相同的search栏。 我如何链接这些其他的UISearchBars
到我已经创build的? 即,我如何configuration这些其他UISearchBars
以便它们返回相同的search结果并链接到相同的UITableView
?
嵌套视图控制器可能是你需要的。
定义一个“顶部视图控制器”,pipe理包含search栏的“顶部视图”,并将顶部视图(在顶部视图上使用-addSubview:
)和相关的视图控制器添加到顶部视图视图控制器(使用-addChildViewController:
在最上面的VC和本身)。
在界面生成器中,你可以定义一个顶视图,在其内部定义一个“容器视图”。然后系统处理子视图和子视图控制器的插入。
通过定义一个好的视图控制器层次结构,可以使您的应用程序devise更加合乎逻辑和干净 在推荐编码之前,我build议花些时间研究一个好的层次结构。
最后一点: UISearchDisplayController
是一个对象(显然不是视图控制器),它将一个search栏添加到视图控制器的视图上方。 您可以将其直接应用于最上方的视图控制器(即始终可见的视图控制器,如导航控制器)之上。 如果你还没有,那么值得一看。 😉
一个例子
视图控制器层次
-
XYZTopViewController
(pipe理XYZTopView
)-
UINavigationController
(pipe理由Apple定义的私有导航视图层次结构)-
XYZFirstPageViewController
(pipe理一个XYZFirstPageView
)(“根”视图控制器) -
XYZSecondPageViewController
(pipe理一个XYZSecondPageView
)(当你需要时由XYZSecondPageView
控制器推送)
-
-
查看层次结构
-
XYZTopView
-
UISearchBar
- (由Apple定义的私有导航视图层次结构)
-
XYZFirstPageView
- (您的视图层次属于第一页/屏幕)
-
由于每个应用只有一个窗口,并且视图没有层次,所以无论如何,您都必须确保视图保持在层次结构的顶部。 一个相对简单的方法是直接将其添加到界面其余部分(导航控制器)上方的窗口中:
- 如何一直显示uiview?
在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];