尝试删除TableView部分时EXC_BAD_ACCESS

时间:2012-04-03 20:54:53

标签: iphone objective-c ios xcode uitableview

我有一个包含几个部分的tableview。在某个时刻,我想删除tableView中的一个部分。要做到这一点,我在标题上有一个长按手势,在长按上我会调出一个像这样的UIMenuController:

UIMenuController *deleteMenu = [UIMenuController sharedMenuController];
UIMenuItem *delete = [[UIMenuItem alloc] initWithTitle:@"Delete"     action:@selector(deleteCell:)];
[deleteMenu setMenuItems:[NSArray arrayWithObject:delete]];
[deleteMenu update];
[deleteMenu setTargetRect:CGRectMake(0, 0, 320, 460) inView:self.superview];
[deleteMenu setMenuVisible:YES animated:YES];

这是在头文件的自定义视图子类中完成的。在deleteCell:方法中,我调用委托方法(委托是拥有tableview的视图控制器)。 在委托方法的实现中,我尝试删除像这样的部分(section为int):

[statsTable deleteSections:[NSIndexSet indexSetWithIndex:section] withRowAnimation:UITableViewRowAnimationAutomatic];

在这一行,我得到一个EXC_BAD_ACCESS。奇怪的是,Xcode在发生这种情况时也会崩溃,所以我无法看到BAD_ACCESS的原因。如果有人知道为什么会发生这种情况,我们将非常感谢您的帮助。

谢谢,

编辑:: 找到解决方案,具有tableview的vc必须成为第一个响应者,以便它允许您从tableview中删除某些内容。谢谢

1 个答案:

答案 0 :(得分:1)

UIMenuController有一个删除MenuItem,它发送delete:消息。我建议使用它而不是用你自己的删除复制它。

顺便说一句,您可以通过单击管理方案轻松启用Xcode 4.3中的NSZombies(您可以通过单击具有当前方案/设备的栏来访问它,如下面的屏幕截图所示......) enter image description here

然后,在弹出的屏幕中,单击“编辑”,您应该看到这个......

enter image description here

选中“启用僵尸对象”,你就可以了。