繁体   English   中英

创建与 NSTreeController 关联的 NSOutlineViewController

[英]creating a NSOutlineViewController associated to a NSTreeController

我尝试以苹果示例“Navigating Hierarchical Data Using Outline and Split Views”为例。

我用 SplitViewController 制作了一个应用程序,我在左窗格中放置了一个 NSOutlineView,在 NSOutlineViewController 中,我添加了一个 NSTreeController。 Xib 在这里

我将outlineView的数据源和委托关联到OutlineViewController,并将内容关联到treeController 在此处输入图像描述

对于treeController,我将keyPth children 放到“children”中,将object controller 放到名为NodeInfo 的class 在此处输入图像描述

这个 class NodeInfo 充满了来自 web 服务的数据,我不确定,但我认为这与用 Datasource.PList 填充 treeController 的 Apple 示例完全不同。 在此示例中,treeController(名为“outlineController”)具有如下绑定引用在此处输入图像描述

我不明白如何在我自己的 storyboard 中进行此绑定。 任何人都可以提供帮助并解释 hosto 进行这些绑定吗?

我回答自己要将 NSTreeController 关联到 OutliveView:

A. - 将你的 treeController 和 outlineView 绑定到包含它们的 ViewController。 在您的 ViewController 中,您将获得以下 2 行:

B. - 您需要有一个 class 代表 TreeWiewController 将处理的不同对象。

class NodeInfo: NSObject, Decodable {
var model: BaseModel!
@objc dynamic var title: String
@objc dynamic var children: [NodeInfo]!

override class func description() -> String {
    return "NodeInfo"
}

@objc dynamic var isLeaf: Bool {
    return children == nil || children.isEmpty
}

@objc dynamic var childCount: Int {
    return children.count
}

init(title: String, model: BaseModel) {
    self.title = title
    self.model = model
    super.init()
}

}

请注意,我的 NodeInfo 中需要名为 BaseModel 的变量,因为数据来自互联网,我需要用它们的值填充 InfoNode 的后代节点

C。 - 在 storyboard 中,我 select 树节点,访问属性检查器并填充 treeController 的不同值以与 NodeInfo class 建立链接,如下所示:

在此处输入图像描述

D. - 现在是绑定这一切的时候了。 首先,在 viewController 中,添加这个变量:

@objc dynamic var contents: [NodeInfo] = []

Contents是包含不同节点的数组。 Select treeController 并在绑定检查器中将树与此变量相关联:

使用 ViewController 的变量 Contents 绑定 treeController

(注意 Model 密钥路径的值)

D.现在MainstoryBoard中的select outlineView,访问绑定检查器,将selectionIndexPaths链接到他ViewController的变量内容:

在此处输入图像描述

(注意 Model 密钥路径的值)

将每个outlineView.tableColumns绑定到treeController.arranged Object: 在此处输入图像描述

请注意 Model 密钥路径的值几乎已为 NSTableVuewCell 的每个字段完成,将其绑定到 TreeConroller.representedObject 中的正确值:

绑定tableColumn'Cell的值。到树控制器

(注意 Model 密钥路径的值)

就这样

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM