1

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

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

基本上当用户进入detailView时,值被设置YEScell.imageViewnil。

没关系,它有效

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

我认为它可能取决于 searchResultsTableView,但我不确定。我试过了

[self.searchDisplayController.searchResultsTableView reloadData]; 

没有效果。

我怎样才能重新加载 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;
}
4

2 回答 2

6

如果我理解正确,那么您可以有一个解决方法,但使用相同的搜索字符串再次搜索:

if (self.searchDisplayController.active) {
    self.searchDisplayController.searchBar.text = self.searchDisplayController.searchBar.text;
}

将其放入viewWillAppear:viewDidAppear:每次显示视图时都会调用它(例如,您从 回到detail view您的search view)。并且在这个地方重新加载数据也会很好,以获得正确的数据(例如,如果您在示例代码中将单元格标记为已读)

Just [self.tableView reloadData];and not the searchResultsTableView(它会在新搜索后自动使用更新的数据)

于 2012-07-08T23:10:51.987 回答
0

听起来好像您的细胞正在被回收并且没有正确重置。UITableView 使用视图回收,因此重要的是,如果您执行诸如设置图像之类的操作,即使它们不是要显示的图像,也要确保明确设置它。

如果您分享您的cellsForRowAtIndexPath代码,您可能会获得更多帮助。

于 2012-07-06T21:31:12.613 回答