为什么属性绑定到NSDatePicker
的值并不总是反映出控件显示的内容?至少有两种情况,我的绑定属性与日期选择器显示的值不同:
nil
(如果用户不与选择器交互)。如果不支持这种基本行为,那么对目标/操作使用绑定的原因是什么?我是Cocoa绑定的新手,所以也许我错过了一些东西。
更新
答案 0 :(得分:4)
为什么绑定到NSDatePicker的属性值并不总是反映出控件显示的内容?
在模型 - 视图 - 控制器模式中,您的NSDatePicker
是视图,ViewController
是控制器,NSDate
属性是模型。
通过控制器将视图绑定到模型。不是相反。
通过控制器将视图绑定到模型时,视图将开始反映模型。如果您与视图进行交互(例如,更改日期),则更改将应用于模型。
初始值。日期选择器显示它的初始日期(在IB中设置)但绑定属性返回nil(如果用户不与选择器交互)。
NSDatePicker
显示默认值,因为模型未提供NSDate对象。 NSDatePicker
NOT 应该在没有用户互动的情况下更改模型。
最小值在选择器中更改日期,但绑定属性仍返回旧值(用户在设置最小值之前设置的值)。
NSDatePicker
只显示可接受值范围内的默认值,因为模型未提供NSDate对象。
如果不支持这种基本行为,那么对目标/行动使用绑定的原因是什么?
目标/行动只是绑定自动执行的一部分。如果没有绑定,您将在控制器(目标)中创建一个操作方法来处理用户交互(例如,用户更改日期)。在action方法中,您将更改模型对象。此外,在加载视图时,您可以将视图同步到模型中的视图。绑定消除了很多这种代码。
答案 1 :(得分:0)
NSDatePicker无法显示空日期。如果未设置dateValue或将值绑定为nil,则控件仍会显示日期值;它喜欢12/02/1982。
无法显示空白日期,因此表明零结合是刺激性的。
以下NSDatePicker子类可以显示空日期并表示nil绑定。
https://github.com/ThesaurusSoftware/TFDatePicker
运行TFDatePickerTest目标以查看其执行情况。