我想更新到tableview自定义单元格。当我搜索时,我想刷新表格单元格。我使用reloadRowsAtIndexPaths方法。这种方法有效,但没有更新单元格。你能帮帮我吗
下面的方法运行当我搜索
-(void)doSearchHotelName:(id)sender{
NSIndexPath *tmpIndexpath=[NSIndexPath indexPathForRow:1 inSection:0];
[self.tableV beginUpdates];
[self.tableV reloadRowsAtIndexPaths:[NSArray arrayWithObjects:tmpIndexpath, nil] withRowAnimation:UITableViewRowAnimationFade];
[self.tableV endUpdates];
}
方法表方法
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"Hotel_FilterSearchCell";
Hotel_FilterSearchCell_iPad *cell = (Hotel_FilterSearchCell_iPad *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
NSArray *nib ;
nib = [[NSBundle mainBundle] loadNibNamed:@"Hotel_FilterSearchCell_iPad" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
else if ([indexPath row]==1) {
if([SharedAppDelegate.filter_selected_hotels_list count]==[SharedAppDelegate.filter_hotels_list count])
[cell.cellExtraInfo setText:@"All(H)"];
else if ([SharedAppDelegate.filter_selected_hotels_list count]!=[SharedAppDelegate.filter_hotels_list count])
[cell.cellExtraInfo setText:[NSString stringWithFormat:@"%i %@",[SharedAppDelegate.filter_selected_hotels_list count],@"Selected(H)"]];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}
答案 0 :(得分:7)
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];
答案 1 :(得分:1)
尝试将UITableViewRowAnimationFade
更改为UITableViewRowAnimationNone
,如果有帮助请告诉我。
我必须这样做,因为我在我的故事板中使用静态UITableView,似乎任何动画都将旧单元格移出视图并替换为新单元格。这基本上从表中删除了单元格,因为旧单元格和新单元格是同一个对象(我的假设)。
答案 2 :(得分:0)
来自UITableView documentation:
<强> beginUpdates 强>
开始一系列方法调用,插入,删除或选择接收器的行和部分。
除非您要插入,删除或选择行或部分,否则不应使用此方法。