整个应用程序的UISearchBar相同?

时间:2014-01-08 03:18:13

标签: ios objective-c uitableview uisearchbar

我见过很多具有通用搜索栏的应用程序始终位于应用程序的顶部。我在一个视图控制器中实现了UISearchBarUITableView。我想在我的应用程序中的其他视图控制器上使用相同的搜索栏。如何将其他UISearchBars链接到我已创建的UISearchBars?即,如何配置这些其他UITableView,以便它们返回相同的搜索结果并链接到同一个{{1}}?

2 个答案:

答案 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
      • (由Apple定义的私人导航视图层次结构)
      • XYZFirstPageView
        • (您的视图层次结构属于第一页/屏幕)