我正在使用集合视图来显示远程目录。与具有selectionDidChange
删除的表视图不同,这没有任何内容。我在这里检查了很多问题,并尝试使用这些解决方案。
由于它将显示一个目录,因此每个项目将根据文件类型执行不同的操作。如果它的目录子文件夹将被提取,如果它是一个文件,它将在其他视图中显示文件详细信息。使用observeValueForKeyPath
方法收听点击集合视图项目。
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
if ([keyPath isEqualToString:@"selectionIndexes"] && [[arrayController selectedObjects] count]) {
int idx = [arrayController selectionIndex];
MyFileModel *selectedFile = [myFilesArray objectAtIndex:idx];
if ([selectedFile.fileType isEqualToString:@"dir"]){
[self fetchSubFoldersForDir:selectedFile];
} else {
[self fetchFileDetailsForFile:selectedFile];
}
}
}
Obper是从nib中清醒添加的。现在问题是默认情况下总是选择第0个索引。因此它会自动触发if else块的第一个文件。因此,如果我有一个像a->b->c
这样的文件夹结构,我将永远看到C目录的内容。
使用观察者还有其他方法可以做到这一点吗?