
让我说我有
classAclassA - classA - classC - classC - classB - classC - classCclassB - classC
我想只扩展classA对象.我是否需要遍历整个三个检查哪个类属于每个对象?
UPDATE
对不起,我得纠正一下. outlineVIEw对象是来自nstreecontroller数据源的NSTreeNodes.只有“representObject”才是我的自定义类.
因此具有这些类的结构是正确的,但它们不能作为大纲视图的节点直接访问.
解决方法 对于它的价值,我在评论中提到的重要“胶水”或多或少直接来自这篇伟大的博文: Saving the expand state of a NSOutlineView.我获取了树中的所有类,并使它们成为具有扩展属性的抽象类的子类,因此NSTreeNode中的每个代表对象都已扩展为属性.
但是,如果您不关心在数据模型中持续扩展,则可能甚至不需要这样做.
直截了当的做法是迭代行:
for (NSUInteger row = 0; row < [outlineVIEw numberOfRows]; row++) { // Expand item if it's an classA NSTreeNode* treeNode = [outlineVIEw itemAtRow:row]; if ([treeNode.representedobject isKindOfClass:[ClassA class]]) [sender.animator expandItem:treeNode]; } …你会注意到for循环从引用的博客文章中借用了很多结构.
所以我猜我的答案是懒惰的,“是的,迭代整棵树.”至少显示的树.
编辑:对于那些对MVC有点过分热心的人,我现在觉得有必要指定上面的代码应该在你用作NSOutlineVIEw控制器的类中,它通常会实现< NSOutlineVIEwDelegate>
总结以上是内存溢出为你收集整理的objective-c – NSOutlineView:仅展开特定类的所有对象全部内容,希望文章能够帮你解决objective-c – NSOutlineView:仅展开特定类的所有对象所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)