2012-04-03 2 views
0

У меня есть табличное представление с несколькими разделами. В какой-то момент я хочу удалить раздел из таблицыView. Чтобы сделать это, у меня есть длинные отводы жест на заголовках, и на длинном кране я воспитывать UIMenuController так:EXC_BAD_ACCESS При попытке удалить раздел TableView

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. Если кто-нибудь знает, почему это происходит, ваша помощь будет очень признательна.

Спасибо,

EDIT :: Найдено решение, вк, который имеет TableView должен стать первым ответчиком для того, чтобы удалить что-то из Tableview. Спасибо

+0

Вы пробовали работать с NSZombies? – CodaFi

+0

Нет, не могли бы вы рассказать мне, как это сделать? Я думал, что мне не нужно, потому что я использую ARC. –

+0

Хм, с ARC вы правы, вам не нужно. вы вызываете -beginUpdates и -endUpdates перед тем, как удалить раздел? – CodaFi

ответ

1

UIMenuController имеет delete MenuItem, который отправляет сообщение delete:. Я бы предложил использовать это вместо копирования с вашим собственным удалением.

В качестве опции вы можете легко включить NSZombies в Xcode 4.3, нажав на «Управление схемами» (вы можете получить к нему доступ, щелкнув панель, в которой есть ваша текущая схема/устройство, например, на снимке экрана ниже ...) enter image description here

затем, на экране, который выскакивает, нажмите кнопку изменить, и вы должны увидеть это ...

enter image description here

Check «Включить зомби объекты», и вы хорошо идти.

+0

Спасибо, я попробовал обернуть их в начале/конце обновлений, и я все равно получаю ту же ошибку. Ваш учебник по NSZombies очень полезен, спасибо за это! –

Смежные вопросы