2010-08-22 3 views
2

J'ai un UITableView qui inclut une liste de UITableViewCells. Et je définis les hauteurs de UITableViewCells dans la méthode (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath.Comment puis-je augmenter la hauteur de UITableViewCell dynamiclly?

Cependant, j'ai besoin d'augmenter la hauteur de UITableViewCell quand il est sélectionné. Par exemple, la hauteur de UITableViewCell doit augmenter de 100 pixels lorsque la cellule est sélectionnée, est-ce que quelqu'un sait comment le faire?

Répondre

11
  1. Stockez l'index sélectionné dans votre contrôleur.
  2. hauteur de la cellule de retour en fonction de cet indice:

    CGFloat height = 30.0f; 
    ... 
    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 
        return indexPath.row == selectedIndex ? height+100 : height; 
    } 
    
  3. Actualiser la géométrie tableview dans la méthode didSelectRowAtIndexPath (bloc vide entre beginUpdates et endUpdates fait le tour):

    - (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
        index = indexPath.row; 
        [tableView beginUpdates]; 
        [tableView endUpdates];  
    } 
    
+0

Ne devrait-il pas recharger cette cellule? – Eiko

+0

Vous devez recharger la cellule uniquement si son contenu change. sur la pratique, il doit en être ainsi en effet ... – Vladimir

+0

En fait, dans ce cas, il doit recharger 2 cellules - le nouvellement sélectionné et le précédent – Vladimir

0

Faites votre méthode de délégué

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

Renvoie la (nouvelle) hauteur correcte et rend la vue de table rechargée le chemin donné.

Questions connexes