为什么UIDatePicker值为null?

时间:2014-02-22 16:38:06

标签: ios objective-c uidatepicker

我有这个代码,当点击UITextField(dateDue)时会添加一个UIDatepicker(datePicker):

在viewDidLoad中:

// Initiate datepicker and assign to due date
UIDatePicker *datePicker = [[UIDatePicker alloc] init];
[datePicker addTarget:self action:@selector(dateChanged:)
 forControlEvents:UIControlEventValueChanged];
_dueDate.inputView = datePicker;

它工作得很好,但我似乎无法在changedDate函数中获取日期值,它一直返回null:

- (void) dateChanged:(id)sender{
    // Add the date to the dueDate text field
    NSLog(@"Date changed: %@", datePicker.date);
}

有谁知道为什么会这样?

彼得

1 个答案:

答案 0 :(得分:1)

dateChanged:方法中,您正在访问名为datePicker的变量。这是一个实例变量吗?

假设它是,你永远不会设置它。在viewDidLoad中,您有一个名为datePicker的局部变量,但它与具有相同名称的实例变量不同。

viewDidLoad中,更改:

UIDatePicker *datePicker = [[UIDatePicker alloc] init];

为:

datePicker = [[UIDatePicker alloc] init];

这将解决它。

您还应将dateChanged:方法更改为:

- (void) dateChanged:(UIDatePicker *)picker {
    // Add the date to the dueDate text field
    NSLog(@"Date changed: %@", picker.date);
}