2013-02-27 5 views
11

Je souhaite développer la cellule tablevue sur son clic. Il y a une vue de table dans laquelle deux cellules sont extensibles et d'autres ne le sont pas. J'ai besoin quand je clique sur la cellule extensible il devrait montrer des cellules dessous et en cliquant encore il devrait cacher. Il y a une image ci-dessous définissant ceci.Développer la cellule UITableView dans UITableViewstylePlain

enter image description here

Comment puis-je obtenir cette fonctionnalité, guide s'il vous plaît au-dessus. Merci d'avance.

+0

Votre problème a-t-il été résolu? – Bhavin

+0

Non, pas encore .... –

+0

Avez-vous vérifié ma réponse? – Bhavin

Répondre

12

Here est le tutoriel complet avec Extensible UITableView

Voici le snip de code pour cela.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if ([self tableView:tableView canCollapseSection:indexPath.section]) 
    { 
     if (!indexPath.row) 
     { 
      // only first row toggles exapand/collapse 
      [tableView deselectRowAtIndexPath:indexPath animated:YES]; 

      NSInteger section = indexPath.section; 
      BOOL currentlyExpanded = [expandedSections containsIndex:section]; 
      NSInteger rows; 

      NSMutableArray *tmpArray = [NSMutableArray array]; 

      if (currentlyExpanded) 
      { 
       rows = [self tableView:tableView numberOfRowsInSection:section]; 
       [expandedSections removeIndex:section]; 

      } 
      else 
      { 
       [expandedSections addIndex:section]; 
       rows = [self tableView:tableView numberOfRowsInSection:section]; 
      } 

      for (int i=1; i<rows; i++) 
      { 
       NSIndexPath *tmpIndexPath = [NSIndexPath indexPathForRow:i 
                   inSection:section]; 
       [tmpArray addObject:tmpIndexPath]; 
      } 

      UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 

      if (currentlyExpanded) 
      { 
       [tableView deleteRowsAtIndexPaths:tmpArray 
           withRowAnimation:UITableViewRowAnimationTop]; 

       cell.accessoryView = [DTCustomColoredAccessory accessoryWithColor:[UIColor grayColor] type:DTCustomColoredAccessoryTypeDown]; 

      } 
      else 
      { 
       [tableView insertRowsAtIndexPaths:tmpArray 
           withRowAnimation:UITableViewRowAnimationTop]; 
       cell.accessoryView = [DTCustomColoredAccessory accessoryWithColor:[UIColor grayColor] type:DTCustomColoredAccessoryTypeUp]; 

      } 
     } 
    } 
} 

comme indiqué ci-dessous photo

enter image description here

This et this une solution aussi vous aider à comprendre comment gérer Expandable TableView

+0

Ceci est la table de groupe, je demande seulement la table. –

+0

@iPhone avez-vous vérifié [ceci] (http://www.roostersoftstudios.com/2011/04/14/iphone-uitableview-with-animated-expanding-cells/) son pour la table plaine – swiftBoy

+0

J'ai déjà vu un tel échantillon avant question d'affichage, cette section utilise la section, en clair, nous avons seulement une section seule cellule a besoin de se développer. –

3

Je pense que ce que vous voulez est déjà donné par Apple. Vous pouvez jeter un oeil à Sample Code fourni par Apple sous le titre de Table View Animations and Gestures.

0

Ceci est possible par le délégué

- (NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath { 
     //write code here 
    } 
+0

Avez-vous déjà utilisé cette méthode à cet effet et pouvez-vous poster le samplecode pour cela –

4

D'accord, ce que je pense est, les titres, Events, Frais généraux etAmis seraient la coutume UIView avec UIImageView pour le fond, UILabel pour le titre, et UIButton pour se développer. Donc, fondamentalement

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 

ayant le nombre de retour des titres que vous avez.

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 

ayant le retour UIView pour chaque titre.

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

ayant le nombre de lignes dans ce titre. Vous devrez peut-être gérer un tableau pour cela.

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

ayant une hauteur de l'élément de cellule

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 

initialement il devrait être 0 (zéro) pour toutes les sections, quand robinet d'utilisateur lors de l'expansion, il devrait être d'augmenter par rapport à nombre de lignes * hauteur de la cellule dans cette section.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

Vous devrez peut-être une bonne logique pour régler toutes les lignes d'expansion

vos boutons d'expansion actions quelque chose comme,

- (void) expandSection:(UIButton *)sender; 

que vous pouvez identifier la section à élargir l'utilisation sender.tag alors n'oubliez pas d'ajouter correctement la balise. Vous pouvez avoir besoin d'un fichier int dans le fichier .h pour stocker la section en cours, et peut être utilisé dans la méthode de source de données - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section.

2

J'ai donné le code source de l'exemple ci-dessous. Vous pouvez personnaliser cet exemple en fonction de vos besoins.

Source Code du lien: Click here

écran de sortie:

enter image description here

0

La réponse acceptée est vrai, mais le lien est obsolète. Pour obtenir cet exemple pour vous travailler avez à faire des choses supplémentaires:

Télécharger ExpandableTableCells projet d'ici:
https://github.com/cocoanetics/Examples

Télécharger DTCustomColoredAccessory.h et fichiers .m d'ici: https://github.com/Cocoanetics/DTFoundation/tree/develop/Core/Source/iOS

Mettre le DTCustomColoredAccessory fichiers dans le projet ExpandableTableCells. Là vous l'avez un exemple de travail, il est plus facile de modifier et de déplacer à partir de là au lieu d'essayer d'écrire à partir de zéro.

+0

J'ai téléchargé le projet 'Download ExpandableTableCells' et ajouté les fichiers Download DTCustomColoredAccessory.h et .m. Mais j'obtiens une erreur "erreur: la commande de l'éditeur de liens a échoué avec le code de sortie 1 (utilisez -v pour voir l'invocation)" Pourriez-vous nous aider s'il vous plaît? –

+0

pourriez-vous poster plus de détails dans l'erreur? – Esqarrouth

Questions connexes