解雇视图时,uitableview commitEditingStyle崩溃

时间:2015-08-10 00:12:57

标签: swift uitableview

此错误的解决方案:

我从我的实现中移除了方法。虽然它有效,但我仍然很想知道为什么当文档提到它们是为了协同工作时,下面的方法对我的实现不起作用。

func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
    return true
}

原始问题:

以下代码用于删除行以及删除coredata上的记录。到现在为止还挺好。但是当我尝试离开包含此tableview视图的视图时,我发现崩溃,而其中一个行的“删除幻灯片”按钮处于活动状态

如果要删除的幻灯片按钮未激活,我尝试关闭视图,它可以正常工作,不会崩溃。

我收到以下错误。

class AppDelegate: UIResponder, UIApplicationDelegate { error thread 1:EXC_BAD_ACCESS

我评论了方法中的所有内容,但即使内部没有代码,它仍然会崩溃。

我是否在方法的实现中遗漏了某些内容,或者没有正确使用它?

    func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {

        if(editingStyle == .Delete ) {

//            let concreteItemToDelete = concreteItems[indexPath.row]
//            managedObjectContext?.deleteObject(concreteItemToDelete)
//            self.fetchLog()
//            mainTableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
        }
    } 

enter image description here

调试控制台:

enter image description here

1 个答案:

答案 0 :(得分:1)

当您尝试关闭时,似乎已从内存中释放了上一个View。当您滑动删除时,看起来垃圾收集器会清除上一个视图。

我有类似的问题,具有相同的EX_BAD_ACESS且没有堆栈跟踪。在我的情况下,everthing一直工作,直到我第三次执行解雇。我正在使用PageManu,并在名为controller2的视图中从tableview执行segue。

我在'main'ViewController中添加了这个(谁将其他视图添加到PageMenu)并且效果很好:

self.addChildViewController(controller1)
self.addChildViewController(controller2)

控制器1和2是我在页面菜单上滑动的视图。现在,似乎垃圾收集器在我回来时不会取消分配视图。