开发者

UITableViewController canceling Edit mode animation when calling [table reloadData] inside (void)setEditing

开发者 https://www.devze.com 2023-03-03 06:42 出处:网络
I\'m having a little problem: i made my setEditing method: - (void)setEditing:(BOOL)editing animated:(BOOL)anima开发者_如何学JAVAte {

I'm having a little problem:

i made my setEditing method:

- (void)setEditing:(BOOL)editing animated:(BOOL)anima开发者_如何学JAVAte {   
    [super setEditing:editing animated:animate];
    [mainTableView reloadData];
}

i'm using the reloadData to call: cellForRowAtIndexPath, and then, if the table is in edit mode, i'll change the appearance of my cell (hiding some labels, for example);

The problem is when i call [mainTableView reloadData] the Edit animation (the red circle slides from left to right and my cell slides to the right) doesn't exist. If don't call it, everything works ok, but i can't customize my cell, since cellForRowAtIndexPath is not called again.

Any suggestion to make it work ??

Thanks!


Maybe you will try to update your table with [tableView beginUpdates] and [tableView endUpdates]? Do you need to reload all the cells or only some of them?

EDIT: Here's the code for reloading all the cells:

[tableView beginUpdates];
NSMutableArray *updatedPaths = [NSMutableArray array];
for (NSNumber *row in yourArray) {
    NSIndexPath *updatedPath = [NSIndexPath indexPathForRow:[row intValue] inSection:0];
    [updatedPaths addObject:updatedPath];
}
[tableView reloadRowsAtIndexPaths:updatedPaths withRowAnimation:UITableViewRowAnimationFade];
[tableView endUpdates];

yourArray is NSArray instance where you store your cell.textLabel values or something like that...

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号