Un drop qui fait de la résistance dans un tableau

muqaddarmuqaddar Administrateur
08:46 modifié dans API AppKit #1
Soit un controlleur avec son accesseur sur un NSMutableArray.
Soit un NSArrayController sous-classé qui implémente les méthodes drag & drop de NSTableView.
Soit un NSTableView sous-classé dont les colonnes sont correctement bindées.

Tout de petit monde fanfaronne ensemble et s'affiche correctement.

Mais c'est au niveau du drag & drop que ça foire. Si le drag est bien pris en compte, le drop ne s'effectue pas.

Je regarde donc ds la méthode acceptDrop :

- (BOOL)tableView:(NSTableView*)tv acceptDrop:(id &lt;NSDraggingInfo&gt;)info row:(int)row dropOperation:(NSTableViewDropOperation)op<br />{<br />    if (row &lt; 0) {<br />		row = 0;<br />	}<br />    <br />    // if drag source is self, it&#39;s a move<br />    if ([info draggingSource] == tableView)<br />    {<br /><br />		NSPasteboard *pboard = [info draggingPasteboard];<br />		NSArray *rows = [pboard propertyListForType:MovedRowsType];<br />		NSIndexSet  *indexSet = [self indexSetFromRows:rows];<br />		<br />		[self moveObjectsInArrangedObjectsFromIndexes:indexSet toIndex:row];<br />		<br />		// set selected rows to those that were just moved<br />		// Need to work out what moved where to determine proper selection...<br />		int rowsAbove = [self rowsAboveRow:row inIndexSet:indexSet];<br />		<br />		NSRange range = NSMakeRange(row - rowsAbove, [indexSet count]);<br />		indexSet = [NSIndexSet indexSetWithIndexesInRange:range];<br />		[self setSelectionIndexes:indexSet];<br />		<br />		return YES;<br />    }<br />}



Méthode qui est bien prise en compte... bref rien ne se passe... drop non effectué.

Une idée ?  :why?:

Réponses

  • GercofisGercofis Membre
    08:46 modifié #2
    Es-tu en CoreData ?

    j'avoue ne pas tout suivre dans le code, mais il parait simpliste par rapport a l'ensemble que j'ai pu glaner de ci de là ,

    Je suis en train de faire une classe de base DNDArrayController...

    Avec un peu de chance ça de devrait pas tarder...

    Par contre ta méthode ne renvoi pas NO par défaut
Connectez-vous ou Inscrivez-vous pour répondre.