UISearch重新排列indexpath.row

时间:2010-05-04 10:26:49

标签: ios objective-c cocoa-touch uikit uisearchbar

我在UiSearchBar中实施了TableView,我还有两个NSArray,一个用于标题,一个用于描述。当我搜索标题数组时,它返回正确的搜索,但当我点击搜索附带的行时,如果我点击第一行,我会得到“第0行”。我的问题是如何在两个数组之间建立连接,以便当搜索根据用户搜索重新排列标题时,描述数组对应于标题所在的行。

3 个答案:

答案 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];
 } 

交配这只是一个快速修复。