いくつかのセクションを持つテーブルビューがあります。ある時点で、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:
、デリゲート メソッドを呼び出します (デリゲートは、テーブルビューを所有するビュー コントローラーです)。デリゲート メソッドの実装では、次のようにセクションを削除しようとします (セクションは int です)。
[statsTable deleteSections:[NSIndexSet indexSetWithIndex:section] withRowAnimation:UITableViewRowAnimationAutomatic];
この行で、EXC_BAD_ACCESS を取得します。奇妙なことに、これが発生すると Xcode もクラッシュするため、BAD_ACCESS の原因を確認できません。なぜこれが起こっているのか誰かが知っているなら、あなたの助けは大歓迎です。
ありがとう、
編集::解決策が見つかりました。テーブルビューから何かを削除できるようにするには、テーブルビューを持つVCが最初の応答者になる必要があります。ありがとう