为什么绑定(bind)到NSDatePicker
的属性值并不总是反射(reflect)控件显示的内容?至少在两种情况下,我的绑定(bind)属性获得的值与日期选择器显示的值不同:
- 初始值。日期选择器显示其初始日期(在 IB 中设置),但绑定(bind)属性返回 nil(如果用户不与选择器交互)。
- 最小值会更改选择器中的日期,但绑定(bind)属性仍返回旧值(用户在设置最小值之前设置的值)。
如果目标/操作不支持这种基本行为,那么使用绑定(bind)的原因是什么?我是 Cocoa 绑定(bind)的新手,所以也许我遗漏了一些东西。
<小时/>更新:
最佳答案
Why property's value bound to NSDatePicker does not always reflect what control shows?
在模型- View - Controller 模式中,您的NSDatePicker
是 View ,您的ViewController
是 Controller ,NSDate
属性是模型。
您可以通过 Controller 将 View 绑定(bind)到模型。反之则不然。
当您通过 Controller 将 View 绑定(bind)到模型时, View 将开始反射(reflect)模型。如果您与 View 交互(例如更改日期),更改将应用于模型。
Initial value. Date picker shows it's initial date (set in IB) but bound property returns nil (if user does not interact with picker).
NSDatePicker
显示任何默认值,因为模型不提供 NSDate 对象。 NSDatePicker
不应在没有用户交互的情况下不更改模型。
Min value changes date in picker, but bound property still returns old value (the value user had set before min value was set).
NSDatePicker
仅显示可接受值范围内的默认值,因为模型未提供 NSDate 对象。
What is the reason to use bindings over target/action if it does not support such fundamental behaviour?
目标/操作只是绑定(bind)自动执行的操作的一部分。如果没有绑定(bind),您将在 Controller (目标)中创建一个操作方法来处理用户交互(例如,用户更改日期)。在操作方法中,您将更改模型对象。此外,在加载 View 时,您可以将 View 同步到模型中的内容。绑定(bind)消除了很多此类代码。
关于objective-c - NSDatePicker 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23089472/