UISearchController与UITableView一起使用?

4

我想在包含UITableView的ViewController上创建一个UISearchController(不是UITableViewController)。 我遇到了2个警告和一个崩溃,不确定它们是否相关 - 但知道其中一个问题是警告。

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

显然,我正在尝试将searchResultsController设置为UIViewController上的tableView,而不是像下面这样使用UITableViewController:
   self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.myTableView];

如果self.myTableView是UITableView,我该如何解决这个问题?我需要将我的tableView转换为UITableViewController才能使它正常工作吗?谢谢。


如果我理解您的设置,您应该传递self,而不是self.myTableView。 - rdelmar
好的,谢谢!现在出现了一个问题,当我点击搜索栏时,我的视图控制器会变黑(除了导航栏),并且我会收到这个错误信息:“尝试在未在窗口层次结构中的<SalesViewController: 0x14e61a160>上呈现<UISearchController: 0x14e522fa0>!” - James
没事了,显然如果你打算让视图充当控制器,你必须传入nil而不是self。 - James
1个回答

5

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

在您的情况下,我认为您正在尝试在持有tableView的同一视图控制器中显示筛选结果。因此,以下内容应该可以解决您遇到的错误-

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

然而,您可能还需要将筛选后的表格的数据源设置为自身。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接