Question

J'essaie de faire une vie Uablewied comme l'application de calendrier native:

enter image description here

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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top