0

我有一个包含几个部分的表格视图。在某个时刻,我想从 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 的视图控制器)。在委托方法的实现中,我尝试像这样删除一个部分(部分是一个 int):

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

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

谢谢,

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

4

1 回答 1

1

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

顺便说一句,您可以通过单击管理方案非常轻松地在 Xcode 4.3 中启用 NSZombies(您可以通过单击具有当前方案/设备的栏来访问它,如下面的屏幕截图所示......) 在此处输入图像描述

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

在此处输入图像描述

选中“启用僵尸对象”,一切顺利。

于 2012-04-03T21:06:36.677 回答