从NSCollectionView中选择项目

时间:2013-12-27 13:40:59

标签: objective-c macos cocoa nscollectionview

我正在使用集合视图来显示远程目录。与具有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目录的内容。

使用观察者还有其他方法可以做到这一点吗?

0 个答案:

没有答案