代码之家  ›  专栏  ›  技术社区  ›  kbanman

ui在正常ui视图中使用控制器的搜索栏?

  •  1
  • kbanman  · 技术社区  · 15 年前

    我想要的:

    顶部有uisearchbar的uiview。开始编辑搜索栏会使当前视图变暗,并显示来自另一个[UITableView]控制器的搜索结果。

    我试过的:

    在Interface Builder中:

    • 将“搜索栏和搜索显示控制器”添加到uiview。
    • 为我的UITableViewController添加占位符对象
    • 添加UITableView对象并将其设置为UITableView控制器的视图
    • 将uiSearchBar的委托设置为uiTableViewController
    • 将uiSearchDisplayController上的所有出口设置为uiTableViewController

    在代码中:

    • 将uiSearchBarDelegate、uiSearchDisplayDelegate协议添加到uiTableViewController

    我得到的是:

    点击编辑搜索字段会使应用程序崩溃。没有错误消息,只调用UITableViewController中的“ViewDidLoad”方法。

    总之:

    如何使用uiview中的uisearchbar的外部控制器?

    2 回复  |  直到 15 年前
        1
  •  3
  •   kbanman    15 年前

    好吧,我已经知道了。我发誓这是我试过的第一件事,但显然我做得不正确。

    在我的uiviewController(其中包含uisearchbar的)中,我实例化一个 UISearchDisplayController :

    // sb = IBOutlet UISearchBar  
    sc = [[SearchController alloc] initWithStyle:UITableViewStylePlain];  
    sdc = [[UISearchDisplayController alloc] initWithSearchBar:sb contentsController:sc];  
    sb.delegate = sc;  
    sdc.delegate = sc;  
    sdc.searchResultsDelegate = sc;  
    sdc.searchResultsDataSource:sc = sc;  `
    

    其中searchController是uiTableViewController的子类,并适应 UISearchBarDelegate UISearchDisplayDelegate 协议。

    现在我考虑一下,使用一个来自ib的链接可能同样有效(并且以同样的方式)。

    所以上面的内容对我很有用,但是现在结果表视图不会显示,除非我手动将其添加到主视图中: [self.view addSubview:sc.tableView]; 但我想这是另一个问题的素材。

    在Web上(就我的google fu而言)没有任何非自授权uisearchdisplaycontroller的文档,因此希望这有助于将来的另一个obj-c noob。

        2
  •  0
  •   bpapa    15 年前

    首先,如果您的控制器类是从UITableViewController扩展的,那么如果您使用的是Interface Builder,则不能在其中包含搜索栏。相反,从uiviewcontroller进行扩展,并自己遵守表数据源和委托协议。

    但是,为了让这个答案对你来说是一个好答案,你需要在你的问题中添加一些代码或者其他东西。