Ich habe eine TabelleView mit Zellen mit einem UITextField als Unteransicht für jede Zelle. Mein Problem ist, dass wenn ich nach unten scrolle, der Text in der ersten Zelle in der letzten Zelle dupliziert wird. Ich kann nicht für das Leben, wenn ich herausfinden warum. Ich habe versucht, die Zellen von den verschiedenen nibs zu laden und die textFields als ivars zu haben. Die UITextFields scheinen nicht das Problem zu sein, ich denke, es hat etwas damit zu tun, dass TableView die Zellen wieder verwendet.Die erste und letzte UITableViewCell ändert sich beim Scrollen
Die textFields haben alle eine Datenquelle, die den Text innerhalb des textFields verfolgt, und der Text wird jedes Mal zurückgesetzt, wenn die Zelle angezeigt wird.
Irgendwelche Ideen? Ich würde wirklich mehr Antworten für diese Frage schätzen.
UPDATE 2: Das ist der Code, den ich für eine benutzerdefinierte Zelle habe, die JournalCell genannt wird. Ich schätze das Feedback sehr.
Ich habe 8 Abschnitte mit je 1 Reihe. Die ersten 7 haben ein textField, die letzte eine Zelle, die sich wie ein Knopf verhält.
Ich bin für die Schaltfläche Zelle testen, wenn es den Abschnitt (7) entspricht, dann gibt es die Zelle zurück, wenn nicht, es geht weiter zum Rest. Könnte das sein?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"Section %i, Row %i", indexPath.section, indexPath.row);
if (indexPath.section == 7) {
static NSString *ButtonCellIdentifier = @"ButtonCellIdentifier";
UITableViewCell *buttonCell = [self.tableView dequeueReusableCellWithIdentifier:ButtonCellIdentifier];
if (buttonCell == nil) {
buttonCell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ButtonCellIdentifier] autorelease];
buttonCell.selectionStyle = UITableViewCellSelectionStyleBlue;
buttonCell.accessoryType = UITableViewCellAccessoryNone;
buttonCell.textLabel.text = sClearAll;
buttonCell.textLabel.textAlignment = UITextAlignmentCenter;
buttonCell.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.8];
buttonCell.textLabel.backgroundColor = [UIColor clearColor];
}
return buttonCell;
}
static NSString *TextCellIdentifier = @"JournalCellIdentifier";
JournalCell *cell = (JournalCell *)[self.tableView dequeueReusableCellWithIdentifier:TextCellIdentifier];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"JournalCell" owner:self options:nil];
cell = customCell;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.accessoryType = UITableViewCellAccessoryNone;
cell.textField.autocapitalizationType = UITextAutocapitalizationTypeWords;
cell.textField.returnKeyType = UIReturnKeyNext;
cell.textField.clearButtonMode = UITextFieldViewModeWhileEditing;
}
switch (indexPath.section) {
case 0:
switch (indexPath.row) {
case 0:
cell.textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
self.authorTextField = cell.textField;
self.authorTextField.text = [self.textFieldDictionary objectForKey:@"author"];
NSLog(@"Reading Author:%@", [self.textFieldDictionary objectForKey:@"author"]);
break;
}
break;
case 1:
switch (indexPath.row) {
case 0:
self.yearTextField = cell.textField;
self.yearTextField.text = [self.textFieldDictionary objectForKey:@"year"];
NSLog(@"Reading Year:%@", [self.textFieldDictionary objectForKey:@"year"]);
break;
}
break;
case 2:
switch (indexPath.row) {
case 0:
self.volumeTextField = cell.textField;
self.volumeTextField.text = [self.textFieldDictionary objectForKey:@"volume"];
NSLog(@"Reading Volume:%@", [self.textFieldDictionary objectForKey:@"volume"]);
break;
}
break;
case 3:
switch (indexPath.row) {
case 0:
self.articleTextField = cell.textField;
self.articleTextField.text = [self.textFieldDictionary objectForKey:@"article"];
NSLog(@"Reading Article:%@", [self.textFieldDictionary objectForKey:@"article"]);
break;
}
break;
default:
break;
}
return cell;
}
bieten einige Beispielcode, damit wir das Problem finden können;) –
Sie haben einige Probleme bei der Wiederverwendung von Zellen richtig. posten Sie Ihre cellForRowAtIndexPath: Methode, damit wir helfen können, es zu beheben – Vladimir
Ich aktualisierte den Beispielcode, um zu reflektieren, was ich für eine benutzerdefinierte Zelle verwende. –