J'ai essayé sans succès d'éditer et de mettre à jour des éléments dans une liste NSOutlineView de liste, je n'utilise pas un treecontroller mais datasource et délégué. D'après ce que j'ai compris, la méthode outlineView: setObjectValue: forTableColumn: byItem datasource s'applique aux outlineviews basés sur les cellules et n'est pas appelée pour la vue. NSTableView a une méthode de source de données similaire tableView: setObjectValue: forTableColumn: row, mais cette fois la documentation indique qu'il s'agit d'une table basée sur des cellules et que "cible/action est utilisée pour chaque élément dans la cellule de vue."Mise à jour des éléments NSOutlineView
Donc, je ne suis pas vraiment sûr de la façon de faire cela, j'ai essayé les méthodes de délégation de champs de texte ci-dessous;
- (void)controlTextDidBeginEditing:(NSNotification *)aNotification
{
selectedRowList = [[self outlineView] selectedRow];
}
- (void)controlTextDidEndEditing:(NSNotification *)aNotification
{
NSManagedObject *selectedGoal = [[self outlineView] itemAtRow:selectedRowList];
NSTableCellView *viewCell = [[self outlineView] makeViewWithIdentifier:@"DataCell" owner:self];
[selectedGoal setValue:[[viewCell textField] stringValue] forKey:@"goalName"];
[self updateOutlineView];
}
Je peux changer la valeur du champ de texte, mais je n'arrive pas à obtenir cette valeur de la vue. Je pense que le problème est que la ligne n'est plus sélectionnée une fois - (void) controlTextDidEndEditing: (NSNotification *) aNotification est exécutée.
Quelqu'un peut-il me diriger dans la bonne direction sur la meilleure façon de gérer la mise à jour des éléments NSOutlineView?
Merci