Frage

In meiner Anwendung, wie viele Mac-Anwendungen, habe ich eine Quellenliste. Im Moment ist dies ein NSOutlineView zu einem NSTreeController gebunden. Ich kann Elemente hinzufügen ziemlich leicht, und habe sogar die „Quellliste“ Aussehen, mit grauem all-caps-Header und allen duplizieren kann. Es gibt etwas, das entzieht mir, aber, und es mich bonkers fährt.

Wie geht ein über ein Kind zu einem bestimmten Elemente in dem Baum hinzufügen? Zum Beispiel, sagen wir mal ich einen Artikel erstellt haben dem Titel „Cheese“. Ich habe bereits zwei Kinder zu Käse, genannt „Cheddar“ und „Swiss“ hinzugefügt. Wie kann ich „Longhorn Colby“ in der Liste der Kinder jetzt hinzufügen, dass meine ersten Additionsverfahren fertigen Lauf hat?

Ich habe es gegoogelt, kann aber nicht eine einfache, klare Antwort finden. Von dem, was ich sehen kann, aber es ist unnötig kompliziert und verwandt erfordern einen Akt des Kongresses etwas so einfach zu tun, wie das Frühstück isst. Bitte korrigieren Sie mich, wenn ich falsch bin.

Update:

Ich glaube nicht, ich bin mit Subtypen. Bisher ist hier, wie ich habe meinen Baum wurde bevölkern:

[treeController addObject:[NSDictionary dictionaryWithObjectsAndKeys:
                               [NSNumber numberWithBool:YES], @"isSourceGroup",
                               @"CHEESE", @"name",
                               [NSArray arrayWithObjects:
                                [NSDictionary dictionaryWithObjectsAndKeys:
                                 @"Cheddar", @"name",
                                 nil],
                                [NSDictionary dictionaryWithObjectsAndKeys:
                                 @"Swiss", @"name",
                                 nil],
                                nil], @"children",
                               nil]];

Die „isSourceGroup“ Bit zu bezeichnen ist, dass dieser Punkt eine der Überschriften in der Gliederungsansicht ist.

War es hilfreich?

Lösung

Versuchen Sie, dass NSArray zu NSMutableArray ändern, und dann:

[treeController insertObject:longhornColbyDict atArrangedObjectIndexPath:[[NSIndexPath indexPathWithIndex:0] indexPathByAddingIndex:0]];

Andere Tipps

jedes TypeOfFood Unter der Annahme hat eine subtypes Eigenschaft ein Array zu halten, und dass diese Eigenschaft in dem Baum Controller als Kinder Schlüsselpfad Knoten gesetzt ist, senden Sie den Käse Art-of-Food einer insertObject:inSubtypesAtIndex: Nachricht. (Sie werden feststellen, dass Accessor in der TypeOfFood Klasse umgesetzt haben müssen.)

Da dies eine KVC-konforme Accessor ist, wird KVO es wickelt, wenn die Baum-Controller die Eigenschaft beginnen die Beobachtung, was bedeutet, dass die Zugriffs Nachricht sendet genug sein soll, die richtigen Benachrichtigungen auslösen und bewirken, dass die rechten Nebenwirkungen, nämlich Aktualisierung die Steuerung und die Aussicht.

Ich habe nicht NSTreeController, obwohl verwendet, so ist es durchaus möglich ist, dass ich einige Aspekte der es verpasst, die diese Antwort Schein macht. Bitte versuchen Sie es und Kommentar mit dem, was passiert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top