【问题标题】:Can you Bind to the timeInterval attribute of an NSDatePicker?你能绑定到 NSDatePicker 的 timeInterval 属性吗?
【发布时间】:2008-12-10 09:12:45
【问题描述】:

我有一个 Core Data 应用程序,它有一个 Event 类,它有一个开始日期和一个结束日期。将这些绑定到一对 NSDatePicker 小部件很简单,但我想让它与 Leopard 中可用的 NSRangeDateMode 一起工作。

NSDatePicker 有一对处理 timeInterval 的方法,但我似乎无法绑定到这个。

更新:我已经使用手动调用来进行绑定,并且成功了一半:

[picker bind:@"timeInterval" 
    toObject:array 
 withKeyPath:@"selection.timeInterval" 
     options:options];

当底层对象发生变化时,它会在NSDatePicker中设置timeInterval,而当NSDatePicker的timeInterval发生变化时,不会设置底层对象。

【问题讨论】:

    标签: objective-c cocoa core-data osx-leopard


    【解决方案1】:

    很遗憾,没有。日期选择器的 timeInterval 属性甚至不能正确地观察到键值。基本上,您要么设置一个操作方法,要么使用委托验证方法来接收对其值的更新。此外,您需要将其四舍五入到最接近的 86400.0 倍数(即一天中的秒数),因为日期选择器在其报告的 timeInterval 中始终偏离几分之一秒。或许等到 Snow Leopard 出现时,这个功能就会完全成熟。

    【讨论】:

    • 这个建议让我开始思考如何让它工作——我将 NSDatePickerCell 子类化,并试图使其完全符合 KVO 的 timeInterval,但这导致了无限循环。我将尝试委托验证方法(事实证明,这是我第一次使用的方法)。
    【解决方案2】:

    间隔支持仅在您使用日期选择器的图形版本时可用。即使这样,timeInterval 也没有原生绑定支持。

    另外,根据您打算如何使用此 UI,我认为选择超过当前月份的范围很差。

    【讨论】:

    • 是的。如果您在 Value (dateValue) 上设置了 Binding,则它不起作用。
    • 似乎部分支持绑定到 timeInterval,只是在 Interface Builder 中不支持(请参阅上面的更新)。
    【解决方案3】:

    1169097 解释了如何实现自定义绑定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      相关资源
      最近更新 更多