2012-04-03 15 views
0

Ich habe eine Tabellenansicht mit mehreren Abschnitten. Zu einem bestimmten Zeitpunkt möchte ich einen Abschnitt aus der TableView löschen. Dazu habe ich eine Geste lange Tippen auf den Headern und auf dem langen Hahn bringe ich eine UIMenuController wie so:EXC_BAD_ACCESS Beim Versuch, TableView zu löschen Abschnitt

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]; 

Diese in meiner benutzerdefinierten Ansicht Unterklasse erfolgte für die Header. In der deleteCell:-Methode rufe ich eine Delegate-Methode auf (der Delegat ist der View-Controller, der die Tabellenansicht besitzt). Bei der Durchführung des Delegatmethode versuche ich wie so einen Abschnitt zu löschen (Abschnitt ein int ist):

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

An dieser Linie, ich eine EXC_BAD_ACCESS bekommen. Das komische daran ist, dass Xcode auch in diesem Fall abstürzt, so dass ich die Ursache für BAD_ACCESS nicht sehen kann. Wenn jemand weiß, warum das passiert, würde Ihre Hilfe sehr geschätzt werden.

Danke,

EDIT :: die Lösung gefunden, die vc, die die Tableview hat der Ersthelfer zu werden, um es Ihnen etwas aus dem Tableview löschen zu lassen. Danke

+0

Haben Sie versucht, mit NSZombies zu laufen? – CodaFi

+0

Nein, können Sie mir sagen, wie das geht? Ich dachte, ich würde das nicht brauchen, weil ich ARC benutze. –

+0

Hm, mit ARC hast du recht, du solltest nicht müssen. rufst du -beginUpdates und -endUpdates an, bevor du den Abschnitt löschst? – CodaFi

Antwort

1

UIMenuController hat ein Delete MenuItem, das die delete: -Nachricht sendet. Ich würde vorschlagen, das zu verwenden, anstatt das mit Ihrem eigenen Löschen zu kopieren.

Nebenbei können Sie sehr einfach NSZombies in Xcode 4.3 aktivieren, indem Sie auf Manage Schemes klicken (Sie können darauf zugreifen, indem Sie auf die Leiste mit Ihrem aktuellen Schema/Gerät klicken, wie im Screenshot unten ...) enter image description here

dann auf dem Bildschirm, das erscheint, klicken Sie auf bearbeiten, und Sie sollten diese sehen ...

enter image description here

Check „aktivieren Zombie-Objekte“ und du bist gut zu gehen.

+0

Danke, ich habe versucht, sie in einem Start/Ende-Updates zu verpacken, und ich bekomme immer noch den gleichen Fehler. Dein Tutorial zu NSZombies ist sehr nützlich, danke dafür! –

Verwandte Themen