tableView滑动删除,返回导致程序崩溃问题
2015-03-18 14:56
267 查看
tableview滑动删除功能,一般用到tableView的两个数据源方法
- (BOOL)tableView:(UITableView*)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
return YES;
}
- (void)tableView:(UITableView*)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyleforRowAtIndexPath:(NSIndexPath *)indexPath;
实现后,删除某个cell没有问题,但滑动一行但不选中delete按钮,就点击导航栏的返回按钮,出现了崩溃现象,而且崩溃是出现在跳回到之前的界面之后,崩溃之后提示打印出EXE_BAD_ACESSS错,直接到了 main
函数里,通过xcode自带的僵尸方法,这样一来就会有打印错误提示了,具体方法如下:
之后崩溃报错提示问题如下:
015-03-18 15:03:53.818 O2O[1289:111104] *** -[DeliveryAddrListController tableView:canEditRowAtIndexPath:]: message sent
to deallocated instance 0x7be55fe0
类名 DeliveryAddrListController [b]tableView:canEditRowAtIndexPath:
方法调用已经销毁的内存[/b]
解决方法:
1. 直接不要实现tableView:canEditRowAtIndexPath:这个方法,运行正常
2.在DeliveryAddrListController类将销毁的时候,取消掉tableview的编辑状态,运行正常
-(void)viewWillAppear:(BOOL)animated{
[super
viewWillDisappear:animated];
[self.myTableView
setEditing:NO];
}
以下为网上另一个博主的文章内容:
虽然问题解决了,但是还是觉得,canEditRowAtIndex这个方法应该不会有问题,于是我再 ios 6 的模拟器下运行程序,重复操作没问题(当然注释掉viewWillDisappear 方法),后来到网上找了好多资料,很大神都说可能是苹果自身的问题,ios7
才有这个问题,ios6 以及以下不会出现这种问题,
至此,问题得到解决,以上列出了两种解决方案:
1,删掉canEditRowAtIndexPath这个方法不用,不会出问题;
2,加上上面说的 viewWillDisappear
方法也可以解决问题;但是我个人推荐第二种方法,虽然第一种方法也是可以解决问题的,但是个人还是觉得这两个方法配套使用比较好。
最终总结出问题可能是在 canEditRowAtIndexPath
这个方法里设置了YES然后返回的时候没有把它设置成 NO 所以报错,ios6会自动设置成NO,iOS7 就手动设置成 NO也可以。所以以后无论什么版本,我们都加上viewWillDisappear手动设置 editing
这个属性为NO 这样确保万无一失。
- (BOOL)tableView:(UITableView*)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
return YES;
}
- (void)tableView:(UITableView*)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyleforRowAtIndexPath:(NSIndexPath *)indexPath;
实现后,删除某个cell没有问题,但滑动一行但不选中delete按钮,就点击导航栏的返回按钮,出现了崩溃现象,而且崩溃是出现在跳回到之前的界面之后,崩溃之后提示打印出EXE_BAD_ACESSS错,直接到了 main
函数里,通过xcode自带的僵尸方法,这样一来就会有打印错误提示了,具体方法如下:
之后崩溃报错提示问题如下:
015-03-18 15:03:53.818 O2O[1289:111104] *** -[DeliveryAddrListController tableView:canEditRowAtIndexPath:]: message sent
to deallocated instance 0x7be55fe0
类名 DeliveryAddrListController [b]tableView:canEditRowAtIndexPath:
方法调用已经销毁的内存[/b]
解决方法:
1. 直接不要实现tableView:canEditRowAtIndexPath:这个方法,运行正常
2.在DeliveryAddrListController类将销毁的时候,取消掉tableview的编辑状态,运行正常
-(void)viewWillAppear:(BOOL)animated{
[super
viewWillDisappear:animated];
[self.myTableView
setEditing:NO];
}
以下为网上另一个博主的文章内容:
虽然问题解决了,但是还是觉得,canEditRowAtIndex这个方法应该不会有问题,于是我再 ios 6 的模拟器下运行程序,重复操作没问题(当然注释掉viewWillDisappear 方法),后来到网上找了好多资料,很大神都说可能是苹果自身的问题,ios7
才有这个问题,ios6 以及以下不会出现这种问题,
至此,问题得到解决,以上列出了两种解决方案:
1,删掉canEditRowAtIndexPath这个方法不用,不会出问题;
2,加上上面说的 viewWillDisappear
方法也可以解决问题;但是我个人推荐第二种方法,虽然第一种方法也是可以解决问题的,但是个人还是觉得这两个方法配套使用比较好。
最终总结出问题可能是在 canEditRowAtIndexPath
这个方法里设置了YES然后返回的时候没有把它设置成 NO 所以报错,ios6会自动设置成NO,iOS7 就手动设置成 NO也可以。所以以后无论什么版本,我们都加上viewWillDisappear手动设置 editing
这个属性为NO 这样确保万无一失。
相关文章推荐
- WriteFile导致程序崩溃的问题
- android 异步弹出窗口 导致程序崩溃的问题
- 微信公众账号 点击返回页面刷新页面得到两个相同的code导致程序报错的问题
- findContours导致MFC程序崩溃的问题
- 摄像头权限被拒绝导致程序崩溃的问题(6.0以下版本)
- 程序调用系统拍照返回后崩溃的问题
- ArcGIS for Android 10.1.1API 中文标注导致程序异常崩溃问题
- Android2.3下PopupWindows初始化时NullPointException导致程序崩溃的问题解决
- 【Android开发经验】关于主题引用混乱导致程序运行崩溃的问题
- iOS项目开发中,对后台返回数据为<null>时候的处理,避免取值产生程序崩溃问题
- 关于主布局在横竖屏转换时导致程序崩溃问题
- 定位“栈溢出”导致的程序崩溃问题
- ASP.NET 程序中删除文件夹导致session失效问题的解决办法分享
- tableView滑动出现删除按钮,不点击就返回崩溃
- 配置win2003 server IIS的总结,为什么IIs的工作进程会在空闲时间释放的问题。同时学会了throw的真正含义,throw的真正含义就是导致程序停止,崩溃,很简单,网摘也有记录。
- 绑定控件导致程序崩溃的问题:Error: no data exchange control with ID 0x%04X.
- ASP.NET 程序中删除文件夹导致session失效问题的解决办法分享
- UIActionSheet buttonTitleAtIndex 方法导致程序崩溃的问题
- Android While 循环导致的资源占用过高进而导致程序崩溃问题
- 记32位程序(使用3gb用户虚拟内存)使用D3DX9导致的一个崩溃的问题