我有这个代码,当点击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);
}
有谁知道为什么会这样?
彼得
答案 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);
}