【问题标题】:How to assign searchBar of storyboard to searchController's searchBar property如何将情节提要的搜索栏分配给 searchController searchBar 属性
【发布时间】:2017-02-07 16:04:22
【问题描述】:

当我将searchBar 添加为headerViewtableView 时,所有委托方法都会按预期触发。

  1. self.myTableView.tableHeaderView = self.searchController.searchBar;

但如果我从 StoryBoard 中获取一个 searchBar IBOutlet 并将其分配给 self.searchController.searchBar,则不会触发委托方法!

  1. _mySearchBar = self.searchController.searchBar;

我也尝试将mySearchBar 嵌入到视图中,然后分配:

  1. _mySearchBarView = self.searchController.searchBar; 但是没有成功!

我做错了什么

【问题讨论】:

    标签: ios objective-c uisearchbar uisearchbardelegate


    【解决方案1】:

    看起来这样做的唯一方法是继承UISearchController,然后设置您的自定义searchBar

    要使用UISearchBar 的自定义子类,子类UISearchController 并实现此属性以返回您的自定义搜索栏。

    UISearchController searchBar documentation

    【讨论】:

    • 这是正确的。 A.) UISearchController 目前在情节提要中不可用。 B.) 使用UISearchController 或自定义外观实现自定义功能的唯一方法是通过子类化。
    【解决方案2】:

    您的第三种方法几乎可以完美地完成您想做的事情,您所要做的就是将 searchController.searchBar 添加为视图的子视图,而不是视图本身。

    let searchController = UISearchController(searchResultsController: searchResultsController)
    searchBarContainer.addSubview(searchController.searchBar)
    

    *searchBarContainer 是您在 Storyboard 中的视图。

    此代码由 mylovemhz 提供,他在此链接回答了类似问题:Can I use a UISearchController with a storyboard?

    在此转发给那些在搜索时来到此主题的人。

    【讨论】:

    • 感谢 @peter-duniho 让我知道在 stackoverflow 上回答问题的最佳做法。我曾经给出的第一个答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 2021-06-24
    相关资源
    最近更新 更多