【问题标题】:How to enable/disable editing in a view based NSTableView using bindings?如何使用绑定在基于视图的 NSTableView 中启用/禁用编辑?
【发布时间】:2014-10-02 15:40:24
【问题描述】:

我想不出一种方法来启用/禁用使用可可绑定在基于视图的 NSTableView 中进行编辑。 我的意思是,我可以完美地启用/禁用 单独 NSTextField 中的编辑,方法是将其“可编辑”属性绑定到文件的所有者属性,例如

@property BOOL canModify;

(绑定到:文件的所有者) (模型密钥路径:self.canModify)

但是,如果我在基于视图的 TableView 中对 NSTextField 执行完全相同的操作,则绑定似乎完全被忽略了。 还要注意的是,我可以通过绑定/数组控制器填充表格,所以这些东西不仅仅适用于“可编辑”属性,这很奇怪。 提前谢谢你

【问题讨论】:

    标签: cocoa binding nstableview nstextfield


    【解决方案1】:

    没有。 Apple 为 tablecellviews 实现 File 的所有者绑定没有问题。我只是忽略了一个 IB 警告。 “......基于视图的单元格内的对象只能连接到 tableview 的委托。” 我确实将 TableView 的“委托”出口设置为我的 WindowController(实现“委托协议”)并且一切正常,表格单元格的 objectValues 没有任何双双双通道。

    【讨论】:

      【解决方案2】:

      您的属性名称和绑定的键路径不匹配,尽管这可能只是一个错字:canModify 与 canModyfy(“i”与“y”)。

      editable 绑定应该可以正常工作。您应该检查您的其他绑定,例如 value 绑定,以查看它是否启用了 Conditionally Sets Editable 绑定选项。烦人的是,这个选项默认是启用的。

      最后,您还没有解释您在哪个 NIB 中定义单元格视图。它们是在与表视图本身相同的 NIB 中定义的,还是在单独的 NIB 中?这会影响哪个对象是文件的所有者。

      即使在与表格视图相同的 NIB 中定义表格单元格视图时,我相信它们也被编码为 NIB-within-a-NIB。也就是说,每个表格单元视图子层次结构实际上都被编码到一个 NIB blob 中,并且该 NIB blob 被归档到父 NIB 中。当加载表格单元视图子 NIB 时,表格视图的委托通常作为其所有者提供。因此,绑定到 File's Owner 可能不会产生您期望的效果。

      对于表格单元格视图,您通常将子视图(如NSTextField)绑定到表格单元格视图本身,并以objectValue 属性为键。

      【讨论】:

      • 感谢您让我意识到错字(您说得对,这只是一个错字)并感谢您记住条件设置可编辑的标志。我完全查看了它,但它并没有解决问题。其实我有两个tableview。第一个是在应用程序的主窗口中,我已将我的 Editable 标志绑定到 App Delegate 对象。第二个表视图在一个单独的窗口中,我使用“文件所有者”来设置绑定。好吧,实际上我看不出行为上有什么不同,即使未选中“有条件地设置可编辑”标志也是如此。
      • 正如我所说,我的内容和数据绑定工作正常。授予:它们引用 xib 中的数组控制器对象(顺便说一下:我使用的是 XCode 6,所以我不直接编辑 Nib,而是 Xib),我还尝试定义对象控制器并设置“可编辑”绑定 realtive对它,但没有运气。所以我不认为这是子笔尖的问题。我怀疑基于单元格的表格视图和基于视图的表格视图之间存在一些差异。
      • 是的。我可以确认问题仅与“基于视图”的表格视图相关。我创建了一个基于单元格的虚拟表格视图,并且 Editable 绑定在 App Delegate 场景和文件所有者场景中都运行良好。
      • 我在基于视图的表视图中使用editable 绑定,它工作得很好。我相信不同之处在于您要绑定的内容。我认为您必须绑定到表格单元格视图或其中的某些内容,但我承认我不确定。尝试使用 NSTableCellView 的自定义子类和 controller 属性。从-tableView:viewForTableColumn:row: 出售单元格视图时,将controller 属性设置为您的控制器。然后,将文本字段的editable 绑定到单元格视图,通过其controller 属性绑定到控制器上应该控制编辑的属性。
      • 您通常将“可编辑”绑定绑定到什么?我的意思是,您在 NSTableCellView 绑定选项卡中为“绑定到”和“模型键路径”使用哪些值?
      猜你喜欢
      • 2013-10-04
      • 2014-04-18
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      • 2014-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多