UISearchController 与 UITableView?

Posted

技术标签:

【中文标题】UISearchController 与 UITableView?【英文标题】:UISearchController with UITableView? 【发布时间】:2014-10-26 04:18:36 【问题描述】:

我希望在包含 UITableView(不是 UITableViewController)的 ViewController 上创建一个 UISearchController。我有 2 个警告和一次崩溃,不确定它们是否相关 - 但我知道我的问题之一是警告

'Imcompatiable pointers types sending UITableView to parameter of type UIViewController.'

显然这是因为我试图在 UIViewController 上将 searchResultsController 设置为我的 tableView,而不是像这样的 UITableViewController:

   self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.myTableView];

self.myTableView 是 UITableView,我该如何解决这个问题?我是否必须将我的 tableView 变成 UITableViewController 才能让它正常工作?提前致谢。

【问题讨论】:

如果我理解你的设置,你应该传递 self,而不是 self.myTableView。 啊,对了,谢谢!现在由于某种原因,当我在搜索栏中单击时,我的视图控制器变黑(除了导航栏),并且出现此错误“尝试在 上呈现 其视图不在窗口层次结构中!” 没关系修复它,如果您打算让视图充当控制器,显然您必须传入 nil 而不是 self 【参考方案1】:

initWithSearchResultsController 方法需要一个视图控制器。根据我的经验,它可以是 UIViewController 或 UITableViewController ,无论您想在哪里显示过滤(搜索)结果。

在您的情况下,我认为您正试图在包含您的 tableView 的同一视图控制器中显示过滤结果。因此,以下内容应该可以消除您遇到的错误-

self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];

但是,您可能还必须将过滤表的数据源设置为 self。

【讨论】:

以上是关于UISearchController 与 UITableView?的主要内容,如果未能解决你的问题,请参考以下文章

UISearchController 与 UITableView?

将 UISegmentedControl 与 UISearchController 一起使用

为啥 iOS viewPager 与 UISearchController 崩溃?

将 UISearchController 与 UINavigationController 一起使用

UISearchController 不能与非半透明 UINavigationBar 一起正常工作

UISearchController:UITableView 的 Section Index 与 searchBar 重叠