各行にTextFieldを持つTableViewがあります。 TableViewは2つのセクションで構成されています。 ユーザーがKeyBoardの戻るボタンをタップすると、NSUserDefaultでTextFieldのテキストを設定します。 cellForRowAtIndexPath
メソッドでは、私はNSUserDefaultのテキストの値を読み取りました。 TableViewをスクロールすると、データが変更されるのはなぜですか?スクロールUITableViewはNSUserDefaultに格納されたUITextFieldのデータを変更します。
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
上:
cellForRowAtIndexPath
で
posizRow = indexPath.row;
posizSect = indexPath.section;
おかげで、 アレッサンドロから:
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の値を設定しますイタリア