IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement iOS Discussion :

Xcode iOS add section and row in this section only


Sujet :

Développement iOS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Par défaut Xcode iOS add section and row in this section only
    Hello,

    I want to add Sections and add rows in the last section created.

    But When I add a section and after add a row it add rows for all section and I want only to the last created section.

    I do this :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
        @interface SectionTestViewController ()
        {
            NSMutableArray *sectionsArray;
            NSMutableArray *rowsInSectionsArray;
            NSInteger currentSection;
        }
        @end
        
        @implementation SectionTestViewController
        
        - (void)viewDidLoad {
            [super viewDidLoad];
            
            self.myTableView.delegate = self;
            self.myTableView.dataSource = self;
            
            sectionsArray = [[NSMutableArray alloc]init];
            rowsInSectionsArray = [[NSMutableArray alloc]init];
            
            currentSection = 0;
        }
        
        #pragma tableview delegate and datasource methods
        
        -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
        {
            return sectionsArray.count;
        }
        
        -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
        {
            return rowsInSectionsArray.count;
        }
        
        -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
        {
            return [sectionsArray objectAtIndex:section];
        }
    A action of a button to add Sections :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        - (IBAction)addSectionButton:(id)sender {
            [sectionsArray addObject:[NSString stringWithFormat:@"Section %lu", (unsigned long)sectionsArray.count]];
            
            currentSection++;
        
            [self.myTableView reloadData];
        }
    A action of a button to add Row :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        - (IBAction)addRowButton:(id)sender {
            [rowsInSectionsArray addObject:[NSString stringWithFormat:@"Ligne %lu", (unsigned long)rowsInSectionsArray.count]];
            
            [self.myTableView reloadData];
        }
    Thanks for help

  2. #2
    Membre émérite
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Par défaut
    Salut,
    Je suis nul en anglais, alors je te la fait en français ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
        {
            return rowsInSectionsArray.count;
        }
    Je pense que ton soucis se situe ici; Il faut que tu retournes le nombres de row qu'il y a dans la section, pour le moment, tu retournes toujours la même chose.. Donc tu auras toujours le meme nombre de row.

    Je pense qu'il te faudrait quelques chose ressemblant à ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
        {
    switch(section)
    {
     case 0 : return  rowsIn0SectionsArray.count;
     case 1 : return  rowsIn1SectionsArray.count;
    }
    
     }

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Par défaut
    Bonsoir,

    Tu voudrais dire qu'il faudrait autant de cases que de sections ?

    Merci.

  4. #4
    Membre émérite
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Par défaut
    C'était juste un exemple pour te montrer le fonctionnement.
    Je pense que dans ton cas, utiliser un switch c'est pas terrible, puisque tu peux avoir x sections; prévoir tous les cases n'est pas possible.

    Une solution serait d'utiliser un array "globale" qui contient plusieurs autres array (un pour chaque sections).

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     @interface SectionTestViewController ()
        {
            NSMutableArray *sectionsTitleArray; //Je me suis permis de changer le nom pour que ce soit plus clair (correspond à sectionsArray)
            NSMutableArray *sectionsRowArray; //Le tableau qui contiendra tous les tableaux pour chaque sections
            NSInteger currentSection;
        }
        @end
        
        @implementation SectionTestViewController
        
        - (void)viewDidLoad {
            [super viewDidLoad];
            
            self.myTableView.delegate = self;
            self.myTableView.dataSource = self;
            
            sectionsArray = [[NSMutableArray alloc]init];
            sectionsRowArray = [[NSMutableArray alloc]init];
            currentSection = 0;
        }
        
        #pragma tableview delegate and datasource methods
        
        -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
        {
            return sectionsTitleArray.count;
        }
        
        -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
        {
            //Retourne la taille du tableau (nb de row) pour la section voulu, il faut peut être procéder en 2 étapes NSMutableArray *arrayTemp = [sectionsRowArray objectAtIndex:section];
            return [[sectionsRowArray objectAtIndex:section] count]; 
        }
        
        -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
        {
            return [sectionsTitleArray objectAtIndex:section];
        }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    - (IBAction)addSectionButton:(id)sender {
            [sectionsTitleArray addObject:[NSString stringWithFormat:@"Section %lu", (unsigned long)sectionsTitleArray.count]];
            [sectionsRowArray addObject:[[NSMutableArray alloc] init]]; //Ajoute un nouveau tableau contenant les row pour la nouvelle section
    
            currentSection++;
            [self.myTableView reloadData];
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    - (IBAction)addRowButton:(id)sender {
    //Ajoute un row au dans le tableau de la section, il faut peut être procéder en 2 étapes NSMutableArray *arrayTemp = [sectionsRowArray objectAtIndex:section];
            [[sectionsRowArray objectAtIndex:currentSection] addObject:[NSString stringWithFormat:@"Ligne %lu", (unsigned long)rowsInSectionsArray.count]]; 
            [self.myTableView reloadData];
        }
    Je n'ai pas testé, mais ca ne doit pas être très loin du résultat.
    Si jamais je ne suis pas clair, hésite pas à demander

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Par défaut
    Citation Envoyé par LeBzul Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    - (IBAction)addRowButton:(id)sender {
    //Ajoute un row au dans le tableau de la section, il faut peut être procéder en 2 étapes NSMutableArray *arrayTemp = [sectionsRowArray objectAtIndex:section];
            [[sectionsRowArray objectAtIndex:currentSection] addObject:[NSString stringWithFormat:@"Ligne %lu", (unsigned long)rowsInSectionsArray.count]]; 
            [self.myTableView reloadData];
        }
    RE !

    Alors la je suis surpris.
    Je débute et donc je n'avais pas pensé a faire comme cela.

    Par contre dans l'exemple tu met la variable section, non définie.

    On peux la trouver par le tableau sectionsTitleArray ? c'est cela ou je me trompe ?

  6. #6
    Membre émérite
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Par défaut
    Oui, je me suis trompé, un malheureux copié/coller ^^
    En faite tu peux utiliser la variable currentSection.
    Mais quelque part cette variable (dans le cas présent) n'est pas forcement utile car currentSection est égale à [sectionsTitleArray count]-1 qui est aussi égale à [sectionsRowArray count]-1.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 07/06/2012, 12h44
  2. Réponses: 3
    Dernier message: 10/05/2010, 23h23
  3. Réponses: 1
    Dernier message: 17/12/2009, 11h59
  4. sous-section Linux Kernel dans la section développement Linux
    Par kromartien dans le forum Evolutions du club
    Réponses: 1
    Dernier message: 13/04/2007, 09h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo