首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSTreeController不响应reloadData

NSTreeController不响应reloadData
EN

Stack Overflow用户
提问于 2011-09-15 11:23:54
回答 1查看 630关注 0票数 0

我有一个绑定到类的NSTreeController。

NSOutlineView dirTree绑定到NSTreeController

特别是大纲视图内容绑定到arrangedObjects

这似乎工作得很好,但我无计可施,想弄清楚为什么它不响应reloadData。

NSTreeController密钥路径为:-

代码语言:javascript
复制
Children    subDirectories
Count       numberOfSubDirs

下面列出了这些参数;numberOfSubDirs返回subDirectories的简单计数(带有附加的诊断显示)。

代码语言:javascript
复制
- (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;我会得到以下输出:-

代码语言:javascript
复制
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中)并调用刷新函数,我会得到以下输出:-

代码语言:javascript
复制
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,并被正确地告知它现在有6个子目录。

但是,它随后查询7个子目录,包括已删除的项"bZTree2",并且不刷新显示以仅显示存在的6个子目录。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-15 11:54:26

NSTreeController不响应-reloadData,因为它没有实现该方法。如果您尝试在NSTreeController实例上调用它,您将同时获得运行时异常和编译器警告。

NSOutlineView响应-reloadData,但除非NSOutlineView使用数据源,否则它不会执行任何操作。如果你使用的是NSTreeController,它根本不会做任何事情。

由于您似乎要创建一个文件系统视图,所以我强烈建议您使用数据源路由,而不是使用NSTreeController,这将为您省去很多麻烦。

苹果也有一些documentationsample code可以做到这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7425514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档