我在UiSearchBar
中实施了TableView
,我还有两个NSArray
,一个用于标题,一个用于描述。当我搜索标题数组时,它返回正确的搜索,但当我点击搜索附带的行时,如果我点击第一行,我会得到“第0行”。我的问题是如何在两个数组之间建立连接,以便当搜索根据用户搜索重新排列标题时,描述数组对应于标题所在的行。
答案 0 :(得分:0)
只是不要使用两个NSArray
,而只使用一个自定义NSObject
对象:
@interface SomeObject : NSObject {
NSString *_title;
NSString *_description;
}
- (BOOL)matchesKeywords:(NSString *)keywords;
@end
然后,您将所有信息存储在一个类中,就像Obj-C一样。您可以轻松执行搜索,因为对象本身有点知道是否与给定关键字匹配,因此当您想要更改SomeObject
时,您可以轻松地在类本身中管理这些更改
答案 1 :(得分:0)
我确实将两个数组合并为一个,但这使得uitableviewcell的加载速度慢得多,因为单元格同时包含标题和描述
答案 2 :(得分:0)
我遇到过这个问题所以为了快速修复,我做了这个: 在标题中: BOOL usingFilterArray;
如果在完整字典和已过滤字典之间切换,只需将上面的BOOL分别设置为NO和YES。
然后在didSelectRowAtIndexPath中使用“if”语句来检查usingFilterArray的状态。 休息应该很容易。 (如果您还需要帮助,请告诉我) 只有一件事,当您在过滤词典被水合后执行搜索时,如果您取消搜索,则需要确保运行此项,否则您的应用程序将崩溃,因为水合词典中不会包含任何对象。 (我假设你清理过滤后的词典)
- (void) searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller {
[self.tableView reloadData];
}
交配这只是一个快速修复。