Biorąc pod uwagę obiekty modelu, które reprezentuje NSTreeController
, w jaki sposób odnajdujesz ich ścieżki indeksu w drzewie, a następnie wybierasz je? To wydaje się być oślepiająco oczywistym problemem, ale nie mogę znaleźć żadnego odniesienia do niego. Jakieś pomysły?Podany obiekt modelu, jak znaleźć ścieżkę indeksu w NSTreeController?
Odpowiedz
Nie ma "łatwy" sposób, trzeba iść węzły drzewa i znaleźć ścieżkę indeksu dopasowanie, coś jak:
Objective-C:
Kategoria
@implementation NSTreeController (Additions)
- (NSIndexPath*)indexPathOfObject:(id)anObject
{
return [self indexPathOfObject:anObject inNodes:[[self arrangedObjects] childNodes]];
}
- (NSIndexPath*)indexPathOfObject:(id)anObject inNodes:(NSArray*)nodes
{
for(NSTreeNode* node in nodes)
{
if([[node representedObject] isEqual:anObject])
return [node indexPath];
if([[node childNodes] count])
{
NSIndexPath* path = [self indexPathOfObject:anObject inNodes:[node childNodes]];
if(path)
return path;
}
}
return nil;
}
@end
Swift:
Extension
extension NSTreeController {
func indexPathOfObject(anObject:NSObject) -> NSIndexPath? {
return self.indexPathOfObject(anObject, nodes: self.arrangedObjects.childNodes)
}
func indexPathOfObject(anObject:NSObject, nodes:[NSTreeNode]!) -> NSIndexPath? {
for node in nodes {
if (anObject == node.representedObject as! NSObject) {
return node.indexPath
}
if (node.childNodes != nil) {
if let path:NSIndexPath = self.indexPathOfObject(anObject, nodes: node.childNodes)
{
return path
}
}
}
return nil
}
}
Dlaczego nie użyć NSOutlineView dostać elementy nadrzędne tak:
NSMutableArray *selectedItemArray = [[NSMutableArray alloc] init];
[selectedItemArray addObject:[self.OutlineView itemAtRow:[self.OutlineView selectedRow]]];
while ([self.OutlineView parentForItem:[selectedItemArray lastObject]]) {
[selectedItemArray addObject:[self.OutlineView parentForItem:[selectedItemArray lastObject]]];
}
NSString *selectedPath = @".";
while ([selectedItemArray count] > 0) {
OBJECTtype *singleItem = [selectedItemArray lastObject];
selectedPath = [selectedPath stringByAppendingString:[NSString stringWithFormat:@"/%@", singleItem.name]];
selectedItemArray removeLastObject];
}
NSLog(@"Final Path: %@", selectedPath);
ten wyświetli: ./item1/item2/item3/...
Zakładam, że szukasz ścieżki do pliku tutaj, ale możesz dostosować to, co może reprezentować twoje źródło danych.
Pytanie szuka NSIndexPath dla dowolnego obiektu w drzewie, dzięki czemu można zmienić programowo wybrane profileIndexPath (s) kontrolera drzewa. Zakładasz, że obiekt jest już wybrany. Jeśli tak, to po prostu dostaniesz selectionIndexPath z kontrolera drzewa! – stevesliva
- 1. jak poznać ścieżkę indeksu UITableView.visibleCells?
- 2. Jak utworzyć obiekt CommonsMultipartFile podany tylko plik
- 3. LD_LIBRARY_PATH: jak znaleźć obiekt wspólny
- 4. Jak znaleźć ścieżkę pobierania Chrome w Javie
- 5. Jak znaleźć najkrótszą ścieżkę w dynamicznej sytuacji
- 6. Przykład NSOutlineView i NSTreeController
- 7. Podany obiekt nie jest rozpoznawany jako fałszywy obiekt. Problem
- 8. Błąd: Podany profil rezerw nie można znaleźć
- 9. Szyny, pobierz ścieżkę zasobu w modelu
- 10. Jak wysłać obiekt modelu w Html.RenderAction (MVC3)
- 11. Jak mogę śledzić ścieżkę indeksu przycisku w komórce widoku tabeli?
- 12. gcc - jak znaleźć ścieżkę nagłówka to plik
- 13. Jak znaleźć ścieżkę instalacji biblioteki Python?
- 14. Jak znaleźć "klasę betonu" modelu django bazowego
- 15. jak znaleźć ścieżkę do zaufanego certyfikatu openssl?
- 16. podany obiekt json, sposób iteracji obiektu w szynach
- 17. Jak znaleźć obiekt po imieniu w pyqt?
- 18. W Selenie, jak znaleźć obiekt "Bieżący"
- 19. javaw.exe nie może znaleźć ścieżkę
- 20. js znaleźć obiekt w nodeList?
- 21. tvOS UICollectionView uzyskać aktualnie skoncentrowaną ścieżkę indeksu przedmiotu
- 22. Tworzenie indeksu kompozytowego z modelu Django
- 23. Jak znaleźć Liczba parametrów modelu keras?
- 24. Jak znaleźć znaczenie funkcji modelu regresji logistycznej?
- 25. Jak znaleźć pełną ścieżkę do aplikacji w skrypcie
- 26. Jak znaleźć najdłuższą ścieżkę w cyklicznym wykresie między dwoma węzłami?
- 27. Tworzenie indeksu ginu z trygramem (gin_trgm_ops) w modelu Django
- 28. Jak znaleźć kod Unicode w alfabecie indeksu dolnego?
- 29. Jak znaleźć najbliższy indeks do określonego indeksu w Matlab
- 30. Nie można znaleźć przeciążenia dla "*", który akceptuje podany argument
Ouy, to naprawdę nieefektywne. Zastanawiam się nad napisaniem podklasy treecontroller, która zachowuje mapowanie między modelem i treenodami. Lub może kategoria w modelu, która utrzymuje odniesienia do skojarzonego treenode. – Tony
Wszystko, co musisz zrobić w swojej podklasie, to utrzymywać płaską 'NSMutableArray' węzłów drzewa. Musisz być ostrożny, że wszystkie modyfikacje węzłów są oczywiście odzwierciedlane w twojej tablicy. –
Hmm, myślałem o 'NSMutableDictionary' odwzorowującym obiekt modelu lub objectID na' NSTreeNode's, ponieważ wydaje się bardziej wydajny dla wyszukiwania. Czy istnieje jakiś powód, dla którego 'NSmutableArray' może działać lepiej? – Tony