Je charge un UITableView, il aura parfois 5 cellules et parfois 4 cellules. En fonction du nombre de cellules, je veux définir le bouton AccessoryDetail pour la ligne 2 ou 3. Je sais que la condition fonctionne parce que je l'ai essayé avec succès avec didSelectRowAtIndexPath:
mais pour une raison quelconque, la TableView ne semble pas obtenir mis à jour en fonction du nombre de lignes affichées. Je recharge avec succès les données TableView dans viewWillAppear:
avec [tableView reloadData]
mais cela ne s'occupe pas du problème AccessoryDetail pour moi. J'ai essayé d'utiliser [tableView reloadInputViews]
en vain. Le problème est que l'image AccessoryDetail est toujours définie sur la ligne 2 ou 3 en fonction de la vue que je commence à charger à partir de l'application.iOS AccessoryDetail image ne se met pas à jour lors du rechargement UITableView
est ici la logique de la méthode cellForRowAtIndexPath:
:
if ((row == 2) && ([[self.office boxAddress] length] == 0) || (row == 3) && ([[self.office boxAddress] length] != 0)) {
cell.selectionStyle = UITableViewCellSelectionStyleGray;
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
}
EDIT: J'ai changé ma méthode selon la suggestion de Simon Lee avec une clause d'autre à ressembler à cela, mais il ne semble pas fonctionner soit :
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:OfficeCellIdentifier] autorelease];
if ((row == 2) && ([[self.office boxAddress] length] == 0) || (row == 3) && ([[self.office boxAddress] length] != 0)) {
cell.selectionStyle = UITableViewCellSelectionStyleGray;
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
//NSLog(@"row == 2 && [[self.office boxAddress] length] == 0 || row == 3");
} else {
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.accessoryType = UITableViewCellAccessoryNone;
}
}
@Veuillez préciser votre question. Soit en postant votre méthode cellForRowAtIndexPath, soit en postant une capture d'écran. –