重新加载searchResultsTableView

Phi*_*lip 1 objective-c uitableview uisearchdisplaycontroller

在我的主tableView中,我有一些自定义单元格(基本上是带有imageView的单元格).

仅当我的plist上的值为false时才设置imageView.然后,当它为真时,imageView为零.

基本上当用户输入detailView时,该值设置为YEScell.imageViewnil.

它没关系,它有效

我正在使用a searchDisplayController,当我搜索具有cell.imageView的东西时,进入detailView然后返回到searchResultsTable,单元格仍然是图像,而它不应该,但主tableView具有正确的单元格(所以,没有图像).

我认为它可能依赖于searchResultsTableView,但我不确定.我试过了

[self.searchDisplayController.searchResultsTableView reloadData]; 
Run Code Online (Sandbox Code Playgroud)

没有效果.

我怎么能重新加载searchResultsTableView,以便它显示正确的单元格,那些带有图像的那些以及那些没有图像的单元格?

任何帮助赞赏!

编辑

这是我的cellForRowAtIndexPath方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }


    NSArray *rows;
    if (tableView == self.searchDisplayController.searchResultsTableView) {
        rows = filteredList; //for search
    } else {
        NSDictionary *section = [localSortedTips objectAtIndex:indexPath.section];
        rows = [section objectForKey:@"Rows"];
    }

    NSDictionary *item = [rows objectAtIndex:indexPath.row];
    cell.textLabel.text = [item objectForKey:@"name"];  
    if ([[item valueForKey:@"isRead"] boolValue] == NO) {
        cell.imageView.image = [UIImage imageNamed:@"unread.png"];
    } else {
        cell.imageView.image = nil;
    }
    cell.textLabel.font = [UIFont boldSystemFontOfSize:15.0];
    cell.textLabel.adjustsFontSizeToFitWidth = YES;

    return cell;
}
Run Code Online (Sandbox Code Playgroud)

小智 6

如果我理解正确,那么您可以使用相同的搜索字符串进行解决方法:

if (self.searchDisplayController.active) {
    self.searchDisplayController.searchBar.text = self.searchDisplayController.searchBar.text;
}
Run Code Online (Sandbox Code Playgroud)

把它viewWillAppear:viewDidAppear:将被认为显示了每次调用(例如:你回去从detail view你的search view).在这个地方重新加载数据也很不错,以获得正确的数据(例如,如果您将单元格标记为读取,就像在示例代码中一样)

只是[self.tableView reloadData];而不是searchResultsTableView(它将在新搜索后自动使用更新的数据)