如何在保持UISearchBar活动的同时强制UITableView重新加载数据?

Mah*_*nic 4 iphone cocoa-touch uitableview uisearchbar ios-4.2

我有一个有20个部分的UITableView.在顶部我有一个UISearchBar,我想在用户输入时过滤部分.

不幸的是,如果UISearchBar处于活动状态并且我从searchBarShouldEndEditing返回NO:则忽略我的[tableView reloadData]调用.如果我从searchBarShouldEndEditing返回YES:那么reloadData调用工作正常,但在每个字符输入后我丢失firstResponder.

如何强制UITableView进行实时更新和过滤,而不必在每个键入的字符之间在UISearchBar上使用resignFirstResponder?

Chr*_*cci 5

我遇到了同样的问题,最终找到了一个非常优雅的解决方案:

您将搜索栏放在表格的特定部分(比如索引0).您将表数据放在另一个部分(比如索引1).

当搜索栏的文本发生变化时,您可以更新模型,然后只需调用:

NSIndexSet *indexSet = [NSIndexSet indexSetWithIndex:1];
[self.tableView reloadSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic];
Run Code Online (Sandbox Code Playgroud)

这样,你的键盘仍然是活动的,你的搜索栏仍然是第一个响应者,你将受益于漂亮的内置表动画!