首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重写arrangedObjects of NSTreeController

重写arrangedObjects of NSTreeController
EN

Stack Overflow用户
提问于 2017-03-21 06:33:07
回答 1查看 262关注 0票数 0

在我的项目中,NSTreeController绑定到NSOutlineView(可可绑定)。由于某些原因,我无法使用NSPredicate 数据中筛选数据。因此,我试图重写arrangedObjects of NSTreeController,但覆盖的arrangedObjects 甚至没有被解雇。(我在其中设置了一个调试断点。)代码编译得很好,我已经将实例更改为我的CleanTreeController。我只在邮件列表中找到了十年前一个未回答的问题

代码语言:javascript
复制
// Subclass of NSTreeController
class CleanTreeController: NSTreeController {
    init() {
        // This gets called.
        super.init(content: nil)
    }

    required init?(coder: NSCoder) {
        super.init(coder: coder)
    }

    override var arrangedObjects: Any {
        let oldArranged = super.arrangedObjects

        let selector = NSSelectorFromString("childNodes")

        guard let oldChildren = (oldArranged as! NSObject)
                            .perform(selector).takeUnretainedValue() as? [NSTreeNode]
        else
        {
            return oldArranged
        }

        let children = oldChildren.filter { (treeNode) in
            //... do some filtering
        }

        return TreeNodeProxy(with: children)
    }
}

// Homemade NSTreeNodeProxy
class TreeNodeProxy : NSObject {

    fileprivate var rootNode : NSTreeNode

    init(with children : [NSTreeNode]) {
        self.rootNode = NSTreeNode()
        self.rootNode.mutableChildren.addObjects(from: children)
    }

    @objc(childNodes)
    var children: [NSTreeNode]? {
        return rootNode.children
    }

    @objc(descendantNodeAtIndexPath:)
    func descendant(at indexPath: IndexPath) -> NSTreeNode? {
        return rootNode.descendant(at: indexPath)
    }
}

我发现

NSTreeController的arrangedObjects方法返回的值是不透明的。您只应观察此属性以确定是否发生了更改。

文档里。那么,NSOutineView如何在不直接读取arrangedObjects的情况下使用它呢?

EN

回答 1

Stack Overflow用户

发布于 2017-03-21 09:38:20

在xib或代码中设置NSTreeControllerNSTreeController

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

https://stackoverflow.com/questions/42919957

复制
相关文章

相似问题

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