相同的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];