У меня есть TableView с TextField для каждой строки.TableView состоит из двух разделов.Когда пользователь нажимает на кнопку возврата KeyBoard, я устанавливаю текст TextField на NSUserDefault.В методе cellForRowAtIndexPath
я прочитал значение текста в NSUserDefault.Почему, когда я прокручиваю TableView, данные изменяются?
Вкл cellForRowAtIndexPath
:
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
//set cell value from NSArray
if ((indexPath.section) == 0) {
cell.textLabel.text = [sicurezzaSullaStrada objectAtIndex:indexPath.row];
} else {
cell.textLabel.text = [infoVeicolo objectAtIndex:indexPath.row];
}
//set TextField value from NSUserDefault
if (indexPath.section == 0) {
//first section
if (indexPath.row == 0) {
TextFieldCell = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 80, 21)];
TextFieldCell.adjustsFontSizeToFitWidth = YES;
TextFieldCell.placeholder = @"Enter text";
TextFieldCell.delegate = self;
[TextFieldCell setText:[[NSUserDefaults standardUserDefaults] objectForKey:@"stringPesoKg"]];
cell.accessoryView = TextFieldCell;
}
if (indexPath.row == 1) {
TextFieldCell = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 80, 21)];
TextFieldCell.adjustsFontSizeToFitWidth = YES;
TextFieldCell.placeholder = @"Enter Text";
TextFieldCell.delegate = self;
[TextFieldCell setText:[[NSUserDefaults standardUserDefaults] objectForKey:@"stringPostiLettoOmologati"]];
cell.accessoryView = TextFieldCell;
} else {
//second section
if (indexPath.row == 0) {
//Riga relativa alla Data di immatricolazione
TextFieldCell = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 80, 21)];
TextFieldCell.adjustsFontSizeToFitWidth = YES;
TextFieldCell.placeholder = @"Enter Text";
TextFieldCell.delegate = self;
[TextFieldCell setText:[[NSUserDefaults standardUserDefaults] objectForKey:@"stringDataImmatricolazione"]];
cell.accessoryView = TextFieldCell;
}
И затем на textFieldDidEndEditing
:
if (posizSect == 0) {
if (posizRow == 0) {
NSUserDefaults *stringDefaultPesoKg = [NSUserDefaults standardUserDefaults];
[stringDefaultPesoKg setObject:textField.text forKey:@"stringPesoKg"];
}
if (posizRow == 1) {
NSUserDefaults *stringDefaultPostiLettoOmologati = [NSUserDefaults standardUserDefaults];
[stringDefaultPostiLettoOmologati setObject:textField.text forKey:@"stringPostiLettoOmologati"];
}
if (posizRow == 2) {
NSUserDefaults *stringDefaultPostiLettoOmologati = [NSUserDefaults standardUserDefaults];
[stringDefaultPostiLettoOmologati setObject:textField.text forKey:@"stringLunghezzaMax"];
} else {
if (posizRow == 0) {
NSUserDefaults *stringDefaultPesoKg = [NSUserDefaults standardUserDefaults];
[stringDefaultPesoKg setObject:textField.text forKey:@"stringDataImmatricolazione"];
}
Вкл didSelectRowAtIndexPath:
Я установил значения PosizRow и PosizSect:
posizRow = indexPath.row;
posizSect = indexPath.section;
Спасибо, Алессандро из Италии