Ich habe eine UITableView, die als ein Formular fungieren. Es hat ungefähr 20 Zellen (mit statischem Inhalt aber dynamischen Zellen). Also hatte ich ein Array mit den Feldern und laden Sie es in der Tabellenansicht. Irgendwann wird der Benutzer drücken Sie die Schaltfläche "Senden" und ich brauche alle Textfelder Werte, die in den Tabellenansicht Zellen eingegeben. Also habe ich ein für jedes Textfeld in jeder Zelle erstellt und ich es in der cellForRowAtIndexPath:
zuweisen.UITableview - Einstellung einer Eigenschaft für Zelle ist mit wiederverwendbaren Zellen durcheinander
if (indexPath.row==RPCVehicleType || indexPath.row==RPCExcess || indexPath.row==RPCDrivers){
static NSString *tableIdentifier = @"TextFieldArrowCell";
TextFieldArrowCell *cell = (TextFieldArrowCell*)[tableView dequeueReusableCellWithIdentifier:tableIdentifier];
if (cell == nil) {
cell = [[TextFieldArrowCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:tableIdentifier];
}
switch (indexPath.row) {
case RPCVehicleType:
self.typeOfVehicleTextfield = cell.valueField;
break;
case RPCExcess:
self.excessTextfield = cell.valueField;
break;
case RPCDrivers:
self.driversTextfield = cell.valueField;
break;
default:
break;
}
return cell;
Das Problem mit diesem Code ist, dass, wenn ich nach unten scrollen werden die Zellen wiederverwendet werden und die Eigenschaften messed sind. Also, wenn ich das erste Mal tun [self.excessTextField setText:@"123"]
ist es in Ordnung, aber nach dem Scrollen und erneut ausführen kann ich andere Textfelder des gleichen Typs der Zelle zu diesem Wert ändern. Problemumgehung, um dieses Problem zu beheben?
Update: versucht, diesen Ansatz mit dem gleichen Ergebnis:
-(UITextField*)getTextFieldForRow:(NSInteger)row{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:0];
TextFieldArrowCell *cell = [self.tableV cellForRowAtIndexPath:indexPath];
return cell.valueField;
}
Vielleicht sollten Sie gemeinsamen Ansatz verwenden und speichern Sie Ihre Daten zu und Array und füllen Sie Ihre Tabellenansicht damit, basierend auf 'indexPath' wie folgt: 'someTextField = backingArray [indexPath.row]' – schmidt9
Das ist kein Problem. Das mache ich. Das Problem ist das Speichern von Daten aus der Tabellenansicht – BlackM
Ich nehme an, Sie erhalten die gleichen Werte, weil Sie auf die gleichen Objekte verweisen. Versuchen Sie 'self.typeOfVehicleTextfield = [cell.valueField mutableCopy]' – schmidt9