iPhone:选择后更改单元格布局

时间:2013-03-31 08:43:22

标签: iphone uitableview

应用程序显示项目列表。每个项目都可以以基本或扩展模式呈现。扩展模式提供有关该项的更多详细信息,并具有由独立XIB文件定义的自己的布局。可以选择多个项目。在选择/取消选择项目时必须切换布局。

我正在使用UITableView实现列表。问题是,只有当单元格滚动然后再返回到屏幕时,才会重新绘制单元格。我该如何解决这个问题?

以下是我现在正在做的事情:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell =[tableView cellForRowAtIndexPath:indexPath];
    cell = [tableView dequeueReusableCellWithIdentifier:ExtendedCellId];
}

-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell =[tableView cellForRowAtIndexPath:indexPath];
    cell = [tableView dequeueReusableCellWithIdentifier:CollapsedCellId];
}

1 个答案:

答案 0 :(得分:0)

尝试在修改后添加[cell setNeedsDisplay] - 这将强制在下一个绘制周期中重绘它。

编辑:如果高度发生变化,我认为你必须重新加载表视图或那些单元格。修改单元格后,您可以尝试基本的更新调用:

 [tableView beginUpdates];
 [tableView endUpdates];

如果这不起作用,您可能想尝试在beginUpdatesendUpdates电话之间进行特定的重新加载 -

 [tableView beginUpdates];
 [tableView reloadRowsAtIndexPaths:<indexPath here> withRowAnimation:UITableViewRowAnimationNone];
 [tableView endUpdates];