J'écris un UITableView qui contient 2 sections. Lorsque la table commence à charger toutes les cellules affichent les informations correctes, mais quand je commence à défiler vers le haut et vers le bas, les cellules detailedTextLabel et accessoryType sont actualisées incorrectement, de sorte que certaines cellules qui doivent contenir un detailedTextLabel contiennent également un accessoire et des cellules devrait seulement contenir un accessoire contient également un detailedTextLabel.UITableView ne se met pas à jour correctement lors du défilement
Intérieur cellForRowAtIndexPath:
J'utilise des instructions de commutation/de cas imbriquées pour appliquer les valeurs correctes aux cellules dans leur section/rangée respective. Autant que je peux dire la logique dans ces déclarations est correcte, il est donc possible que la valeur de cell
variable est inccorée lors de la mise à jour?
La table se charge correctement mais après le défilement, accessoryType et detailedTextLabel sont mélangés.
Click for link to screen shots of the table.
Voici le code à l'intérieur de ma sous-classe UITableViewController:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [sectionNames count];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
NSArray *headingsSection = [cellTitles objectAtIndex:section];
return [headingsSection count];
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
return [sectionNames objectAtIndex:section];
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
self.tableView.allowsSelection = YES;
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.text = [[cellTitles objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
cell.textLabel.textColor = [UIColor blackColor];
cell.textLabel.font = [UIFont boldSystemFontOfSize:15];
switch (indexPath.section) {
case 0:
cell.detailTextLabel.text = [NSString stringWithFormat:@"%d%%", [[assistSettingsArray_glob objectAtIndex:indexPath.row] intValue]];
break;
case 1:
switch (indexPath.row) {
case 0:
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
break;
case 1:
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
break;
case 2:
if (defaultAssistOn) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
break;
}
break;
}
return cell;
}
De plus, si vous décidez d'ajouter des sous-vues à la vue de contenu, vous devrez supprimer celles avec quelque chose comme [[[cellule contentView] subviews] makeObjectsPerformSelector: @selector (removeFromSuperview)]; ' – Winder
Oh super, ça a réglé le problème parfaitement. Merci beaucoup. :) – Sabobin