Objective c NSDatePicker绑定
为什么绑定到Objective c NSDatePicker绑定,objective-c,macos,cocoa,cocoa-bindings,Objective C,Macos,Cocoa,Cocoa Bindings,为什么绑定到NSDatePicker的属性值并不总是反映控件显示的内容?当“我的绑定”属性的值与日期选择器显示的值不同时,至少有两种情况: 初始值。日期选择器显示其初始日期(在IB中设置),但绑定属性返回nil(如果用户未与选择器交互) 最小值更改选择器中的日期,但绑定属性仍返回旧值(用户在设置最小值之前设置的值) 如果目标/操作不支持这种基本行为,那么对其使用绑定的原因是什么?我是可可装订新手,所以可能我遗漏了什么 更新: 为什么绑定到NSDatePicker的属性值并不总是反映控件显示的
NSDatePicker
的属性值并不总是反映控件显示的内容?当“我的绑定”属性的值与日期选择器显示的值不同时,至少有两种情况:
nil
(如果用户未与选择器交互)更新: 为什么绑定到NSDatePicker的属性值并不总是反映控件显示的内容 在模型视图控制器模式中,
NSDatePicker
是视图,ViewController
是控制器,NSDate
属性是模型
可以通过控制器将视图绑定到模型。而不是相反
通过控制器将视图绑定到模型时,视图将开始反映模型。如果与视图交互(例如更改日期),更改将应用于模型
初始值。日期选择器显示其初始日期(在IB中设置),但绑定属性返回nil(如果用户不与选择器交互)
NSDatePicker
显示任何默认值,因为模型未提供NSDate对象NSDatePicker
应不在没有用户交互的情况下更改模型
最小值更改选择器中的日期,但绑定属性仍返回旧值(用户在设置最小值之前设置的值)
NSDatePicker
仅显示可接受值范围内的默认值,因为模型未提供NSDate对象
如果目标/操作不支持这种基本行为,那么对其使用绑定的原因是什么
目标/操作只是绑定自动执行的一部分。如果没有绑定,您将在控制器(目标)中创建一个操作方法来处理用户交互(例如,用户更改日期)。在动作方法中,您将更改模型对象。此外,在加载视图时,可以将视图与模型中的视图同步。绑定消除了大量此类代码
为什么绑定到NSDatePicker的属性值并不总是反映控件显示的内容
在模型视图控制器模式中,NSDatePicker
是视图,ViewController
是控制器,NSDate
属性是模型
可以通过控制器将视图绑定到模型。而不是相反
通过控制器将视图绑定到模型时,视图将开始反映模型。如果与视图交互(例如更改日期),更改将应用于模型
初始值。日期选择器显示其初始日期(在IB中设置),但绑定属性返回nil(如果用户不与选择器交互)
NSDatePicker
显示任何默认值,因为模型未提供NSDate对象NSDatePicker
应不在没有用户交互的情况下更改模型
最小值更改选择器中的日期,但绑定属性仍返回旧值(用户在设置最小值之前设置的值)
NSDatePicker
仅显示可接受值范围内的默认值,因为模型未提供NSDate对象
如果目标/操作不支持这种基本行为,那么对其使用绑定的原因是什么
目标/操作只是绑定自动执行的一部分。如果没有绑定,您将在控制器(目标)中创建一个操作方法来处理用户交互(例如,用户更改日期)。在动作方法中,您将更改模型对象。此外,在加载视图时,可以将视图与模型中的视图同步。绑定消除了大量此类代码。NSDatePicker不能显示空日期。如果未设置dateValue或将该值绑定为nil,则控件仍显示日期值;像1982年2月12日 不能显示一个空的日期,从而表明无绑定是令人恼火的 以下NSDatePicker子类可以显示空日期,并表示nil绑定
运行TFDatePickerTest目标以查看其执行情况。NSDatePicker无法显示空日期。如果未设置dateValue或将该值绑定为nil,则控件仍显示日期值;像1982年2月12日 不能显示一个空的日期,从而表明无绑定是令人恼火的 以下NSDatePicker子类可以显示空日期,并表示nil绑定
运行TFDatePickerTest目标以查看其执行情况。尝试使用一些代码改进您的问题。也许这些链接对你有帮助:附加的示例项目。我来看看。同时看看这些链接:“当它改变时,你仍然需要调用-dateValue来获取日期。”试着用一些代码来改进你的问题。也许这些链接对你有帮助:附加的示例项目。我来看看。同时看看这些链接:“当它发生变化时,您仍然需要调用-dateValue来获取日期。”此外,初始的
NSDatePicker
值可以直接在内部设置为ivar,而不需要通过setter,因此不会触发KVO通知或绑定。此外,初始的NSDatePicker
值可以在内部直接设置为ivar,而不通过setter,因此不会触发KVO通知或绑定。