Это просто продолжение множества комментариев по поводу принятого решения. Спасибо за вашу помощь. Чтобы сделать это, пример кода выглядит следующим образом:
- (void)textFieldDidBeginEditing:(UITextField *)textField {
textFieldThatWillBeUpdatedByTheUIDatePicker = (UITextField *)textField;
}
Где textFieldThatWillBeUpdatedByTheUIDatePicker
объявлено как UITextField
в заголовочном файле.
Наконец, вот метод, который изменяет ячейку:
- (NSString *)datePickerValueChanged:(UIDatePicker*) datePicker{
NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateStyle = NSDateFormatterMediumStyle;
textFieldThatWillBeUpdatedByTheUIDatePicker.text = [NSString stringWithFormat:@"%@",[df stringFromDate:datePicker.date]];
}
Чтобы обработать повторное использование ячейки, сделайте то, что сказал @Deepak в отношении массива, который вы можете использовать в этой строке:
[dateArray replaceObjectAtIndex:textFieldThatWillBeUpdatedByTheUIDatePicker.tag withObject:[NSString stringWithFormat:@"%@",[df stringFromDate:datePicker.date]]];
Где tag
установлен в cellForRowAtIndexPath
следующим образом:
textField.tag = indexPath.row;
Я предполагаю, что dateArray
предварительно заполнен и до того, как представление таблицы будет вызвано впервые с реальными датами или пустыми значениями. Если вы попытаетесь заменить что-то, чего нет, то оно, очевидно, потерпит неудачу.
Наконец, когда UIDatePicker
строится в cellForRowAtIndexPath
, включите эту строку для обработки повторного использования ячейки:
textField.text = [dateArray objectAtIndex:indexPath.row];
Первый раз может быть пустым или предварительно заполненным датой.