Objective c 什么是可可装订;“模型关键路径”;对于这个文本字段?

Objective c 什么是可可装订;“模型关键路径”;对于这个文本字段?,objective-c,cocoa,model-binding,key-value-observing,key-value-coding,Objective C,Cocoa,Model Binding,Key Value Observing,Key Value Coding,这是一款专注于学习Cocoa绑定的应用程序。它基于文档并使用故事板 初始控制器是TestWindowController,它与TestViewController具有“窗口内容”关系 TestViewController有一个视图,我在其中放置了一个名为“name”的NSTextField。这是一个连接到TestViewController的IBOutlet 应用程序目标指定单个文档类型,其类为TestDocument 我的TestDocument类有一个公共属性NSString*name 在I

这是一款专注于学习Cocoa绑定的应用程序。它基于文档并使用故事板

初始控制器是TestWindowController,它与TestViewController具有“窗口内容”关系

TestViewController有一个视图,我在其中放置了一个名为“name”的NSTextField。这是一个连接到TestViewController的IBOutlet

应用程序目标指定单个文档类型,其类为TestDocument

我的TestDocument类有一个公共属性NSString*name

在IB中,在实用程序窗格中打开Bindings面板并选择NSTextField的情况下,我选中了“Bind to:”并从弹出窗口中选择了“Test View Controller”。但是在ModelKeyPath字段中,我似乎找不到返回TestDocument的“name”属性的路径

我认为我们可以在UI元素和模型属性之间创建绑定。但也许我走错了方向?UI元素的模型键路径是否应该指向对象控制器,而对象控制器又有自己的文档绑定?(我可以看出这在现实世界中是有用的,因为一个UI元素可能会影响多个模型属性,但我正试图让这一点比这一点简单一点)

这个测试应用程序的目的是帮助我在一个更真实的环境中学习绑定(基于文档,多视图控制器支持窗口中的视图),而不是我一直在讨论的示例/教程/Q&a

我尝试使用IB在模型关键路径字段中提供的上下文菜单构建模型关键路径,包括: docu。(当我开始键入“文档”时)上下文菜单显示了完整的拼写,所以我点击tab接受建议并继续编辑,然后当我点击句点键时,上下文菜单显示了一个空菜单——如果我正在构建正确的模型键路径,我希望TestDocument模型上的公共属性会出现。但这似乎是正确的方向与其他“尝试这一点”的努力相比:

view.window.contentViewController.这看起来像一条死胡同。 view.superview.window.windowController.docu--否:上下文菜单不建议windowController路径中存在文档 等等

我一直是这样推理的:我选择了一个UI元素,所以“Model Key Path”将是指向模型类的键名的路径可以启动路径,但我认为UI元素没有文档的概念。在这种上下文中,了解文档的第一个地方是WindowController,所以要“离开”UI元素并访问我的TestWindowController,我会

视图->超级视图->窗口->窗口控制器->文档

但是我的并没有在路径中显示跟随窗口控制器的文档


那么,模型的关键路径是什么呢?

您需要从文本视图逐步升级到文档

复选框“绑定到:”应设置为“查看控制器”


“模型密钥路径”在Interface Builder中设置为:view.window.windowcontroller.document.yourmodelobject

Auto complete并不是那么好-只是因为不推荐它并不意味着它不起作用。进入视图控制器类文件,尝试记录密钥路径的值。如果获得了预期值,可以尝试从将文件分类到模型关键路径字段中。xib的文件所有者是什么?Rupert Pupkin,我选择故事板方法的原因之一是,文件所有者的概念被包含在框架中——这使得从预先编写的故事板文档中学习变得更加困难。在经典意义上,TestDocument的-makeWindow控制器添加NSStoryboard返回并实例化名为“Main”的故事板所返回的窗口控制器所以我想说TestDocument是xib的文件所有者。您同意吗?您需要从textview逐步升级到document。复选框Bind to:应设置为View Controller。模型密钥路径设置为:View.window.windowcontroller.document.yourmodelobjectRupert,请将其重新表述为答案,因为它起作用了!Paul Patter儿子,你应该得到一些支持票,因为自动完成停止在view.window.windowcontroller!