searchResultsTableView显示两个相同的单元格

时间:2015-02-02 06:31:18

标签: ios objective-c uitableview uisearchdisplaycontroller

我有一个从Parse服务器提取数据的搜索栏。我注意到有时tableView将在我输入时显示同一单元格的两倍。

enter image description here enter image description here

如果我继续键入它,那么它将只显示其中一个单元格。我注意到如果我慢慢输入,只有一个单元显示整个时间(应该如此)。也许Parse查询返回得太快,tableView无法正确重新加载?

你们可以解决这个问题的任何亮点将不胜感激!谢谢!

修改

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
[self.searchResult removeAllObjects];
[self.queryArray removeAllObjects];

NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"name contains[c] %@", searchText];

PFQuery *query = [PFUser query];
[query whereKey:@"fullName" containsString:searchText];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error) {
        for (PFObject *pfObj in objects)
        {
            NSDictionary *person = [[NSDictionary alloc]
                                    initWithObjects:@[pfObj[@"fullName"], pfObj.objectId]
                                    forKeys:@[@"name", @"objectId"]];
            [self.queryArray addObject:person];
        }

        self.searchResult = [NSMutableArray arrayWithArray: [self.contacts filteredArrayUsingPredicate:resultPredicate]];
        [self.searchResult addObjectsFromArray:self.queryArray];
        NSLog(@"query array %@", self.queryArray);
        NSLog(@"%@", self.searchResult);
        [self.searchDisplayController.searchResultsTableView reloadData];
    } else {
        NSLog(@"%@", error);
    }
}];
[self.searchDisplayController.searchResultsTableView reloadData];
}

1 个答案:

答案 0 :(得分:0)

在更改文本字段值时使数组为零。我的意思是每次你键入它来调用一个函数,你会得到排序的值数组。所以在打电话之前让它为零。因为它还存储来自先前搜索的数据,这就是为什么两次获得相同数据的原因。我有同样的问题,我花了很多时间才弄明白:D