У меня есть NSTreeController с привязками к классу.
NSOutlineView dirTree привязывается к NSTreeController
В частности, представление Outline View Content связывается сранжированныйObjects
Это работает хорошо, но я в своем уме, чтобы выяснить, почему он не отвечает на reloadData.
Пути ключа NSTreeController: -
Children subDirectories
Count numberOfSubDirs
Они перечислены ниже;numberOfSubDirs возвращает простое количество подкаталогов (с добавленным диагностическим отображением).
- (NSArray *)subDirectories {
if (subDirectories == nil) {
[self loadSubDirectories];
}
return subDirectories;
}
- (NSInteger)numberOfSubDirs {
NSArray *tmp = [self subDirectories];
NSLog(@"numberOfSubDirs %@ %d", [self relativePath], [tmp count]);
return [tmp count];
}
Если я вызываю функцию обновления, которая обновляет данные, то вызывает [dirTree reloadData];Я получаю следующий вывод: -
Reload Data
numberOfSubDirs Shared 7
numberOfSubDirs Adobe 1
numberOfSubDirs bZTree2 0
numberOfSubDirs Ian Documents 25
numberOfSubDirs Library 1
numberOfSubDirs NET 1
numberOfSubDirs TSA 12
numberOfSubDirs Wacom 1
Если я удаляю каталог (внешне в Finder) и вызываю функцию обновления, я получаю следующий вывод: -
Reload Data
numberOfSubDirs Shared 6
numberOfSubDirs Adobe 1
numberOfSubDirs bZTree2 0
numberOfSubDirs Ian Documents 25
numberOfSubDirs Library 1
numberOfSubDirs NET 1
numberOfSubDirs TSA 12
numberOfSubDirs Wacom 1
NSTreeController вызывает numberOfSubDirsна родительском «Shared», и ему правильно сказано, что теперь у него есть 6 подкаталогов.
Однако затем он запрашивает 7 подкаталогов, включая удаленный элемент «bZTree2», и не обновляет отображение, чтобы показать только 6, которыеесть.