虽然@Wain 建议您删除一行并同时插入一行,但我想补充一点,您也可以使用单元格重新加载来达到相同的效果。该reloadRowsAtIndexPaths:withRowAnimation:
功能有时会被忽略,但当您需要将一个单元格替换为另一种类型的单元格时,它非常方便。
实际上,当表视图通知您用户删除时,您会执行以下操作:
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
//Delete the item from the data source first!
//If there are no more items in the data source array for that section, reload the last remaining row. Otherwise, just delete the row.
if ([myDataSourceArrayForTheAppropriateSection count] == 0)
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationRight];
else
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationRight];
}
}
就像我说的,这是一种对我来说更有意义的替代解决方案,而且它还具有只使用一个动画调用的好处。
希望这可以帮助!