NSOutlineView qui merde
Tchouboudou
Membre
Bonsoir les gens... Aujourd'hui, j'ai essayé d'insérer une p'tit machin qui change l'icône d'une ligne d'un NSOutlineView quand on "expand" ou qu'on "collapse" une ligne (pour reprendre dres termes anglophones). Tout ça marche très bien, si j'ai une seul ligne qui peut s'"expander" et s'"collapser". Malheuresement, ça ne marche plus quand il y en a plus. J'ai galérer 3 heures, et j'ai trouvé le source de mon problème : c'est le [outline reloadData] qui fait merder, dans la toute dernière méthode (celle qui gère l'ouverture). Voici mon code :
Pouvez-vous m'aider ?
Merci d'avance,
Tchouboudou
PS : le bug, c'est que ça ferme l'application : OutlineView has exited due to signal 10 (SIGBUS).
- (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item<br />{<br /> if (nil == item)<br /> return [theData objectAtIndex:index];<br /> else if ([[[(NSDictionary *)item objectForKey:@"Genre"] objectAtIndex:index] isEqualToString:@"seul"])<br /> return [item objectAtIndex:index];<br /> else<br /> return [[(NSDictionary *)item objectForKey:@"Childs"] objectAtIndex:index];<br />}<br /><br />- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item<br />{<br /> if ((nil == item) || [item objectForKey:@"Childs"])<br /> return YES;<br /> else<br /> return NO;<br />}<br /><br />- (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item<br />{<br /> if (nil == item)<br /> return [theData count];<br /> else if ([[(NSDictionary *)item objectForKey:@"Genre"] isEqualToString:@"seul"])<br /> return 4;<br /> else<br /> return [[item objectForKey:@"Childs"] count];<br />}<br /><br />- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item<br />{<br /> if ([[tableColumn identifier] isEqualToString:@"Image"])<br /> {<br /> NSImage *image = [NSImage imageNamed:[item objectForKey:@"Image"]];<br /> [image setSize:NSMakeSize(16, 16)];<br /> return image;<br /> }<br /> else<br /> return [item objectForKey:[tableColumn identifier]];<br />}<br /><br />- (void)outlineViewItemDidCollapse:(NSNotification *)notification<br />{<br /> open = 0;<br /> [outline reloadData];<br />}<br /><br />- (void)outlineViewItemDidExpand:(NSNotification *)notification<br />{<br /> open = 1;<br />}
Pouvez-vous m'aider ?
Merci d'avance,
Tchouboudou
PS : le bug, c'est que ça ferme l'application : OutlineView has exited due to signal 10 (SIGBUS).
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Voilà , ça devrait fonctionner maintenant ;-)