【问题标题】:Xcode 7: Binding an array controller to a radio button groupXcode 7:将数组控制器绑定到单选按钮组
【发布时间】:2016-01-31 18:06:45
【问题描述】:

我有一小组对象,用户应该能够使用单选按钮组从中选择一个。对象已经绑定到数组控制器。有没有办法将该数组控制器绑定到单选按钮组,以便动态生成其他单选按钮?如果可能,首选 IB 解决方案。

示例项目:https://scriptreactor.com/collectionviewtest_radio.zip

目标是能够选择“a”、“b”、“c”项之一,并在视图控制器中提供该选择。

【问题讨论】:

    标签: macos cocoa xcode7 radio cocoa-bindings


    【解决方案1】:

    您可以在基于视图的表中通过objectValue (NSTableViewCell) 和集合视图中的representedObject (NSCollectionViewItem) 绑定按钮状态。

    如果NSArrayController 配置为为这些父视图生成单元格/项目,则视图将维护集合中每个视图的objectValuerepresentedObject 绑定目标的状态。

    所以在 IB 中,您有一个带有单选按钮的通用子视图,如果单选按钮在集合中,您应该能够选择键路径为 representedObject.<whateverKeyPath> 的“集合视图项”来绑定单选按钮查看项目。或者,如果按钮是基于视图的表格的表格视图单元格的子视图,您可以选择键路径为 objectValue.<whateverKeyPath> 的“表格视图单元格”。

    虽然它可能在最近的 OSX 10.10 更新到 NSCollectionView 时过时,但 quick start guide 很好地说明了如何在集合视图的子视图中配置绑定。表视图子视图绑定类似,但您使用 objectValue 而不是 representedObject 作为视图中的属性。

    【讨论】:

    • 我用 NSCollectionView 建立了一个组,并通过 ArrayController 和您的代表对象方法传递了不同的单选标签。现在,我的问题是我仍然需要绑定实际值(否则,选择单选按钮不会做任何事情)。此外,单选按钮不作为一个组 - 我可以一次选择所有这些。
    • 您可以将单选按钮绑定到selected 而不是representedObject.<something> 并禁止多选。我想也许你的目标是绑定到模型中已经有属性的东西,并允许多选。我也不确定您是否需要在默认选择行为之上和之外添加单选按钮,但我想您可以禁用它以使其显示为您想要的。 FWIW,旧的标准方式是已弃用的 NSMatrix. 令人讨厌的是,他们没有确切说明如何替换这种行为。
    • 我已经尝试使用 NSCollectionView 但似乎无法完成选择的绑定。最后,我想在我的 ViewController 中有一个选定的对象。示例项目:scriptreactor.com/collectionviewtest_radio.zip
    • @Etan,如果你能正常工作,告诉其他人如何在没有NSMatrix 的情况下做这件事将是你自己的一个很好的答案。
    • 到目前为止还没有工作。我已经恢复使用弹出按钮,尽管它们需要用户点击两次...
    猜你喜欢
    • 2014-06-06
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多