我有一个UITableViewController,其中我添加了一个UISearchBar作为使用接口生成器的tableHeaderView。然后,我在nib中添加了一个UISearchDisplayController,并设置了所有连接(delegate、searchResultsDelegate、searchContentsController、searchResultsDataSource,都连接到UITableViewController)。然后,我在代码中实现了所有委托和数据源方法。
它就像一个魅力,除了一个奇怪的bug:有时搜索结果表视图不会滚动,我可以看到它后面的主表视图的闪光灯。我使用了searchResultsTableView,显然它是主表视图的一个子视图,我想这就是我前面描述的触摸问题背后的原因。
我犯了什么错?有可能在UITableViewController和UISearchDisplayController一起使用吗?如果是这样,如何将其设置为不将结果表视图作为主表视图的子视图添加?
Update:我找到了这个样本,它在UITableViewController中使用UISearchDisplayController,显然搜索表视图也会被添加到主表视图中。所以现在我不认为这是我的问题。
问题是我找不到我所做的和那个样本所做的有任何实质性的区别。我只是将UISearchBar作为UITableView头添加到UITableViewController中,并在其中添加UISearchDisplayController .这就像当我试图滚动时,iOS在主表和搜索表之间出现了混淆。你有什么想法吗?
更新:添加了200代表赏金。只在你知道自己在说什么的时候才能回答。
发布于 2011-07-18 12:52:02
这是一个额外的self.tableView.scrollEnabled = YES,它在搜索数据请求完成后立即被调用。希望它能对将来有同样问题的人有所帮助。
发布于 2011-11-13 23:02:38
我认为您可能想尝试将UISearchDisplayController IBOutlet添加到类中,并将其连接到nib文件中的SearchdDisplayController。有趣的是,您的nib中的搜索显示控制器自动将其连接到检查器中默认的serachdisaplaycontreoller出口。
发布于 2011-07-12 12:39:21
搜索栏控制器使用自己的表视图,该视图是在自己的表的基础上添加的。如果将UISearchDisplayController的委托和UISearchDisplayController设置为UITableViewController,则表视图控制器必须在其委托方法中区分两个表视图。如果您不正确地这样做,这可能会导致您的错误。
换言之:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (tableView == self.tableView) {
return number of rows in data model;
} else {
perform the search query;
return number of rows in search query;
}
}对于所有委托和dataSource方法,您都会执行类似的操作。
我不能百分之百确定这就是导致你的问题的原因,但是没有看到更多的来源,很难说。
https://stackoverflow.com/questions/6635680
复制相似问题