TableView编辑状态下跳转页面的崩溃处理


29down votefavorite

12

I have a viewController with a UITableView, the rows of which I allow to edit (delete) with a swipe - much like in the Mail app. I do it with, among other, this method:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {

    return YES;
}

However, if I have a delete button revealed, and at the same time I use back navigation of my UINavigationController, i.e. when I popViewControllerAnimated:, the app crashes with the following message:

[ViewController tableView:canEditRowAtIndexPath:]: message sent to deallocated instance 0xaae64d0

How can I resolve this problem?

 


up vote57down voteaccepted

In your view controller's dealloc method, set the table view's editing property to NO.


shareeditflag

answered Oct 8 '13 at 8:41

Guy Kogus
3,96811023

 

6  
   

This works but it only started happening in iOS7. Any idea why? –  Imran Oct 26 '13 at 10:49
15  
   

Because Apple's written some buggy code. –  Guy Kogus Oct 27 '13 at 22:50
    
   

Hope we are all submitted Bug Reports :) –  burrows111 Jan 20 '14 at 13:54
    
   

At first, I thought this is a random crash because of system bugs because crashlytics tells me only few people(out of thousands) having this issue. Now I know why and get my app fixed! –  benck Feb 16 '14 at 9:17
1  
   

Nice find. I see Apple still hasn't fixed this. –  Tander Mar 10 at 9:32
   

add a comment


up vote35down vote

I had the same problem, but I was using ARC and I didn't want to be mucking about in the dealloc method. Doing it in viewWillDisappear was sufficient to stop the crash.

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [table setEditing:NO];
}

shareeditflag

answered Oct 8 '13 at 16:14

Nathan Rabe
49026

 
    
   

Is it wrong to have a dealloc method under ARC as long as you don't call [super dealloc]? –  artooras Oct 9 '13 at 9:27
   upvote
  flag

It's not wrong. The accepted answer won't break anything and will compile normally. You literally won't be allowed to call [super dealloc] or release as ARC is supposed to call them for you. My suggestion was mostly to reduce confusion since I didn't want an unusual dealloc method when none of my other classes have one. It also feels weird to be setting a property on an object moments before it will likely be released. –  Nathan Rabe Oct 9 '13 at 15:39
3  
   

This method will sometimes cause weird behaviour if you present other vcs etc so I would use the dealloc method. –  Imran Oct 26 '13 at 10:51
1  
   

viewDidDisappear: also works, which I prefer in this case as the user doesn't see the tableview transitioning out of the editing state. –  Defragged Mar 6 '14 at 13:20
1  
   

Thank you.... I also had this issue on iOS7 only.... –  lepert Mar 25 '14 at 4:42

欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 330987132 | Go:217696290 | Python:336880185 | 做人要厚道,转载请注明出处!http://www.cnblogs.com/sunshine-anycall/p/4343859.html

时间: 2024-11-01 06:22:49

TableView编辑状态下跳转页面的崩溃处理的相关文章

如何获取GridView编辑状态下单元格里的值?

还在使用这样的代码吗? var txtName = grid1.Rows[e.RowIndex].Cells[0].FindControl("txtName") as TextBox;if (txtName != null){ // 读取值 //} 其实这些工作(在单元格中查找控件,并尝试获取其中的值)已经被封装了 .现在,只要调用 ExtractValuesFromCell 方法即可. 而该方法也被很多种列类型所支持: DataControlField, BoundField, Au

iOS中 UITableViewRowAction tableViewcell编辑状态下的功能 UI技术分享

 * tableView:editActionsForRowAtIndexPath: // 设置滑动删除时显示多个按钮  * UITableViewRowAction // 通过此类创建按钮  * 1. 我们在使用一些应用的时候,在滑动一些联系人的某一行的时候,会出现删除.置顶.更多等等的按钮,在iOS8之前,我们都需要自己去实现.But,到了iOS8,系统已经写好了,只需要一个代理方法和一个类就搞定了  * 2. iOS8的<UITableViewDelegate>协议多了一个方法,返回值是

DataGridView控件为何不能拖拽和拉伸(编辑状态下)?

问题描述 按下鼠标:移动鼠标:选中控件时不能拉伸调整,按下鼠标后无法拖拽控件,控件会从屏幕上消失,鼠标弹起后,又恢复到第一张图里的样子请各位高手给解答下啊.VS已经重装过了,用的是别人那边运行没问题的安装包. 解决方案 解决方案二:添加panel控件.picturebox控件后也是一样的效果.而且会使得button.checkbox这些控件也变成和它们一样的效果.解决方案三:大神们,帮忙看看啊~~解决方案四:你设置的属性问题..有不少属性都会导致此结果.你可以尝试重新建一个窗口,然后放datag

datagrid自编辑没有结束编辑状态时如何获取字段的值?

问题描述 也就是要获得编辑状态中的值,查了API似乎没有这样的方法,都是要在结束编辑状态下才能获得值,大家有没有办法? 解决方案 直接获取editor 然后 getValue 不就得到编辑的值吗解决方案二:给一个参考吧{id:'company',header: "Company", width: 160, sortable: true, dataIndex: 'company', editor: new Ext.form.TextField({allowBlank: false,ena

php- js在不跳转的情况下向一个页面传递参数

问题描述 js在不跳转的情况下向一个页面传递参数 需求是把textarea传递到savexml.php进行数据保存,但同时我希望页面还留着当前页面.代码如下: <form name=""form1"" id=""form1"" method=""post"" action=""newtest.php""> <input type=

JavaScript实现单击下拉框选择直接跳转页面的方法

  本文实例讲述了JavaScript实现单击下拉框选择直接跳转页面的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <script type="text/JavaScript"> <!-- function MM_jumpMenu(targ,selObj,restore){ //v3.0 eval(targ+".location='&quo

在打印预览状态下编辑Word文档

我们在打印预览状态下查看Word文档时,有时会发现不符合打印要求的地方,需要重新编辑,通常我们会关闭打印预览回到编辑状态.其实我们只需进行如下操作,就可以在打印预览状态下进行Word文档编辑修改. 方法如下:在打印预览状态下,单击打印预览工具栏的"放大镜"图标,鼠标指针由"放大镜"变为闪烁的光标,就可以编辑该文档了.

跪求大神解答-通配符的情况下跳转不同页面

问题描述 通配符的情况下跳转不同页面 各位大神好,我是刚接触java的一个小白,我现在需要写个修改功能.struts.xml里面用的是通配符,在页面指定的那个方法,它就会跳转到哪个页面,但是我现在需要的是它跳转到另外的一个页面,就是点击添加之后写入数据,但是还没保存的时候,里面是有数据的,这个咋整呀..

ie 8-关于ie8下div变为可编辑状态的问题,contenteditable=&amp;amp;quot;true&amp;amp;quot;???

问题描述 关于ie8下div变为可编辑状态的问题,contenteditable="true"??? 其他浏览器可以正常删除图片(包括ie6.7),但ie8就不行,我给图片设置了display:block才可以,问题是块级元素玩个毛线啊,请求解决方法??? 请在ietester中测试 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"