UableView… la bonne façon
-
12-11-2019 - |
Question
J'essaie de faire une vie Uablewied comme l'application de calendrier native:
Mais j'essaie d'apprendre la meilleure façon de le faire. Je suis en mesure de l'obtenir pour la plupart avec une instruction Switch dans la méthode CellForrowatIndexpath, mais j'ai du mal à changer le TextColor lorsqu'une cellule est sélectionnée.
Pour une raison quelconque, Cell.Sissected est toujours non, et je n'ai aucun moyen de recharger le TableView après une autre cellule de toute façon.
Dois-je sous-classer UITableViewCell pour quelque chose d'aussi simple et stocker un tableau de cellules?
Toute aide serait appréciée Merci.
La solution
Il n'est pas nécessaire de sous-classe, comme indiqué dans le doc doc La fonction de délégation:
tableView:willSelectRowAtIndexPath:
devrait faire l'affaire
ÉDITER:
Vous trouverez ci-dessous un code qui devrait démontrer l'idée d'utiliser le délégué. Veuillez noter que ce code n'est pas testé, car je ne suis actuellement pas devant mon Xcode.
-(void)willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (prevIndexPath != nil) {
UITableViewCell* prevCell = [self.tableView cellForRowAtIndexPath: prevIndexPath];
prevCell.textLabel.textColor = [UIColor black]; // your initial color here
}
UITableViewCell* cell = [self.tableView cellForRowAtIndexPath: indexPath];
cell.textLabel.textColor = [UIColor green];
prevIndexPath = indexPath;
}
Assurez-vous de définir le protocole UITableViewDelegate sur votre classe de contrôle qui gère votre tableView et définissez la tableViews.delegate à cela.
Pour faire l'exécution de ce code, vous devez également définir une propriété ou une variable avec le nom PrevIndexpath. Ceux-ci contient la cellule précédemment sélectionnée qui est nécessaire pour revenir à la cellule à sa couleur initiale.