在我的主tableView中,我有一些自定义单元格(基本上带有imageView的单元格)。
仅当我的plist上的值为false时才设置imageView。然后,当它为真时,imageView为零。
基本上,当用户输入detailView时,该值设置为YES
,cell.imageView
为零。
没关系,它有效
我正在使用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;
}
答案 0 :(得分:6)
如果我理解正确,那么您可以使用相同的搜索字符串进行解决方法:
if (self.searchDisplayController.active) {
self.searchDisplayController.searchBar.text = self.searchDisplayController.searchBar.text;
}
将其放在viewWillAppear:
或viewDidAppear:
中,每次显示视图时都会调用它(例如,您从detail view
返回到search view
)。在这个地方重新加载数据也很不错,以获得正确的数据(例如,如果您将单元格标记为读取,就像在示例代码中一样)
仅[self.tableView reloadData];
而不是searchResultsTableView
(新搜索后会自动使用更新的数据)
答案 1 :(得分:0)
听起来好像你的细胞正在被回收而没有正确重置。 UITableView使用视图回收,因此,如果您执行诸如设置图像之类的操作,则确保即使它们不是要显示的图像也要确保显式设置。
如果您分享了cellsForRowAtIndexPath
代码,则可能会获得更多帮助。