2010-05-30 6 views
2

J'ai un NSArrayController lié à un NSTableView. Avec cela, j'ai les boutons Ajouter/Supprimer typiques.Cocoa: Supprimer l'élément de NSArrayController

Alors que l'ajout d'un élément est très simple (j'appelle une méthode, crée un objet avec des valeurs par défaut et l'ajoute) J'ai des problèmes pour supprimer des objets du contrôleur. Je sais que je peux le faire de manière simple en connectant le bouton avec l'action remove du contrôleur ArrayController. Mais ce n'est pas ce que je veux. J'ai besoin de retirer l'objet manuellement car j'ai du code supplémentaire à traiter.

De toute façon, enlever des objets semble beaucoup plus compliqué que ce à quoi je m'attendais. Il a déjà essayé:

NSArray *items = [doToItemsArrayController selectedObjects]; 
[doToItemsArrayController removeSelectedObjects:items]; 

ou

NSIndexSet *iSet = [doToItemsArrayController selectionIndexes]; 
[doToItemsArrayController removeSelectionIndexes:iSet]; 

Aucun d'entre eux ne semble fonctionner. Comment puis-je supprimer l'objet sélectionné d'un NSArrayController avec le code Objective-C?

Répondre

6

Vous pouvez supprimer des objets en utilisant une de ces méthodes. Ils sont indépendants de la sélection.

– removeObjectAtArrangedObjectIndex: 
– removeObjectsAtArrangedObjectIndexes: 
– remove: 
– removeObject: 
– removeObjects: 

Si vous souhaitez supprimer l'objet sélectionné dans le tableau de contenu, vous pouvez obtenir l'objet sélectionné (s) en utilisant les méthodes ci-dessous, puis le brancher sur l'une des méthodes mentionnées ci-dessus.

– selectionIndex 
– selectionIndexes 
0

Les méthodes que vous avez essayées sont pour supprimer des objets de la sélection, pas pour supprimer des objets de la matrice. Pourquoi ne pas simplement appeler la méthode d'action remove:?

1

Vous pouvez utiliser -removeObjects: pour supprimer réellement les objets au lieu de les retirer de la sélection:

[doToItemsArrayController removeObjects:items]; 
Questions connexes