TAG

RSS订阅

收藏本站

设为首页

当前位置:主页 > 移动开发 > IOS开发 >

IOS开发 删除UITableView 行

发布时间:2015-02-28 23:41 类别:IOS开发

使用的函数:

 

[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];

 

注意的是一定要在之前将数据源(Datasource)中的内容删除,否则会报错。

 

被这个问题郁闷了好久,嘿嘿。

 

 

 

 

 

http://www.devdiv.com/iOS_iPhone-UITableView%E5%88%A0%E9%99%A4%E4%B8%80%E4%B8%AArow%EF%BC%8C%E7%95%8C%E9%9D%A2%E6%B2%A1%E5%88%B7%E6%96%B0-thread-78943-1-1.html

 

 

 

 

 

-(void)tableView:(UITableView *)atableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

    if (editingStyle == UITableViewCellEditingStyleDelete) {

        [bookmarks removeObjectAtIndex:indexPath.row];

        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationFade];

       [[NSUserDefaults standardUserDefaults] setObject:bookmarks forKey:@"Bookmarks"];  [self.tableView reloadData];

    }

}

 

 

 

TableView在删除记录时crash,且crash位置在numberOfRowsInSection或者其他看似不相关的地方。但事实上,仔细观察call stack会法相问题一般出在tableView:(UITableView *)tableView commitEditingStyle中。

 

原因是[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];会reload当前的tableview,所以系统会去调用numberOfRowsInSection之类的函数。如果此时data model一致性有问题,UITableView库函数会assert(例如:删除后的行数应该等于删除前的行数-1)。所以如果删除数据宿时crash了,记得检查在commitEditingStyle中的数据操作是否正确完整。

猜你会喜欢....

Copyright © 2015 www.wahenzan.com 哇!很赞 版权所有 浙ICP备14030256号-1 Power by DedeCms

浙公网安备 33010602005986号

声明:本站所有文章除标明原创外,均来自网络转载,版权归原作者所有,如果有侵犯到您的权益,请联系本站删除 网站管理员:758763728

360网站安全检测平台