Si potrebbe creare una sottoclasse di NSTableView, ignorando keyDown
in questo modo:
- (void)keyDown:(NSEvent *)theEvent
{
unichar key = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];
if(key == NSDeleteCharacter)
{
[self deleteItem];
return;
}
[super keyDown:theEvent];
}
quindi assicurarsi che qualsiasi NSTableView che si desidera avere la funzionalità di eliminazione utilizza la sottoclasse in Interface Builder invece del normale NSTableView.
è possibile implementare il metodo - (void)deleteItem
per esempio come questo:
- (void)deleteItem
{
if ([self numberOfSelectedRows] == 0) return;
NSUInteger index = [self selectedRow];
[documentController deleteItemWithIndex:index];
}
Se si dispone di diverse visualizzazioni che è necessario tenere traccia separatamente dallo stesso documentController, è possibile identificarle utilizzando i tag , cioè inserisci un tag per la vista in Interface Builder, quindi controlla il valore del valore self.tag nel metodo 'keyDown:'. – Frost
Ci dispiace, ma questa risposta non dovrebbe essere contrassegnata corretta. Questa soluzione non è assolutamente la migliore pratica. – Jacque