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 :

Ajout d'une cellule ios


Sujet :

Développement iOS

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2012
    Messages : 57
    Points : 74
    Points
    74
    Par défaut Ajout d'une cellule ios
    Bonjour,

    voila le problème, j'affiche une liste de personne, dans un UITableView, que je récupère via une api en json (pour l'instant sa je gère) cette liste de personne est triée par pays ensuite par région,
    l'utilisateur peut choisir dans quelle région il veut afficher ces personnes,
    (exemple je veux que tu m'affiches les personnes de France qui habite en Aquitaine),
    sa encore pas de soucis car c'est l'api qui me gère la liste, mais au bout d'un moment il n'y a plus de personne en Aquitaine, donc l'api me renvoi la liste des personnes de toute la France en ajoutant une entrée sur ma liste pour m'indiquer que cette personne ne fait plus parti de la recherche demandé.

    Voila un exemple de liste que je récupère en json.

    (j'ai pas tout mis par anonymat)
    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
    0 =     {
            city = Lyon;
            "criteria_opened" = O;
            "first_name" = Christophe;
            online = Oui;
            "visit_date" = 20131118;
        };
        1 =     {
            city = Creutzwald;
            "criteria_opened" = O;
            "first_name" = Patrice;
            online = Oui;
            "visit_date" = 20131118;
        };
        2 =     {
            city = Toulon;
            "criteria_opened" = O;
            "first_name" = Petr;
            online = Oui;
            "visit_date" = 20131118;
        };
        3 =     {
            city = Maresches;
            "criteria_opened" = O;
            "first_name" = Yohann;
            online = Oui;
            "visit_date" = 20131118;
        };
        4 =     {
            city = Serris;
            "criteria_opened" = O;
            "first_name" = Weisley;
            online = Oui;
            "visit_date" = 20131118;
        };
        code = 200;
    }
    On peut voir que c'est un dictionnaire de tableau de dictionnaire, j'enlève le "code = 200" et je met chaque entrée dans un tableau de dictionnaire pour pouvoir les afficher par la suite dans mon UITableView,

    voila mon tableau de dictionnaire
    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
    {
            city = Lyon;
            "criteria_opened" = O;
            "first_name" = Christophe;
            online = Oui;
            "visit_date" = 20131118;
        },
            {
            city = Creutzwald;
            "criteria_opened" = O;
            "first_name" = Patrice;
            online = Oui;
            "visit_date" = 20131118;
        },
            {
            city = Toulon;
            "criteria_opened" = O;
            "first_name" = Petr;
            online = Oui;
            "visit_date" = 20131118;
        },
            {
            city = Maresches;
            "criteria_opened" = O;
            "first_name" = Yohann;
            online = Oui;
            "visit_date" = 20131118;
        },
            {
            city = Serris;
            "criteria_opened" = O;
            "first_name" = Weisley;
            online = Oui;
            "visit_date" = 20131118;
        }
    )


    La photo ne correspond pas trop au tableau par soucis d'anonymat.


    mais comme vous le voyez je n'ai personne en Aquitaine donc l'api me dit à chaque entrée "criteria_opened = O" pour m'indiquer que ces personnes ne font pas parti de la région recherché.
    Donc mon but est d'afficher une cellule en plus qui dit à l'utilisateur que la recherche par région n'est plus pris en compte, ma démarche a été d'ajouter une entrée sur la table pour m'indiquer à quel endroit je dois afficher ma nouvelle cellule.

    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
    -(void)BuildArray
    {
    	// responseObject contient mon dictionnaire de tableau de dictionnaire
    	NSMutableDictionary *tableDico = [[NSMutableDictionary alloc] initWithDictionary:responseObject];
    	[tableDico removeObjectForKey:@"code"]; // je supprime "code = 200"
    	bool critere = true;
    	for (int i=0; i < tableDico.count; i++)
    	{
    	    NSDictionary *d = [[NSDictionary alloc] initWithDictionary:[tableDico valueForKey:[NSString stringWithFormat:@"%d", i]]];
    	    if ([d valueForKey:@"criteria_opened"] && critere)
    	    {
    	        critere = false;
    	        [tableArray addObject:[NSDictionary dictionaryWithObject:@"criteria" forKey:@"opened"]];
    	    }
    	        [tableArray addObject:d];
    	}
    }
    tableArray me retourne ceci
    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
    40
    {
            opened = criteria;
        },
            {
            city = Lyon;
            "criteria_opened" = O;
            "first_name" = Christophe;
            online = Oui;
            "visit_date" = 20131118;
        },
            {
            city = Creutzwald;
            "criteria_opened" = O;
            "first_name" = Patrice;
            online = Oui;
            "visit_date" = 20131118;
        },
            {
            city = Toulon;
            "criteria_opened" = O;
            "first_name" = Petr;
            online = Oui;
            "visit_date" = 20131118;
        },
            {
            city = Maresches;
            "criteria_opened" = O;
            "first_name" = Yohann;
            online = Oui;
            "visit_date" = 20131118;
        },
            {
            city = Serris;
            "criteria_opened" = O;
            "first_name" = Weisley;
            online = Oui;
            "visit_date" = 20131118;
        }
    )
    Ensuite dans la methode "cellForRowAtIndexPath:" je teste si à indexPath.row il y a la clé "opened" pour afficher uniquement le texte
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        
        static NSString *chatTableIdentifier = @"ChatIdentifier";
        
        ChatCell *cell = [tableView dequeueReusableCellWithIdentifier:chatTableIdentifier];
        
        if (cell==nil)
        {
            NSArray *omg = [[NSBundle mainBundle] loadNibNamed:@"ChatCell" owner:nil options:nil];
            for (id currentObject in omg)
            {
                if ([currentObject isKindOfClass:[ChatCell class]])
                {
                    cell = (ChatCell *)currentObject;
                    break;
                }
            }
        }
        
        if (tableArray==nil)
            return cell;
        
        
        if ([[tableArray objectAtIndex:indexPath.row] valueForKey:@"opened"])
        {
            cell.textLabel.text = @"La recherche ne prend plus en compte \nvotre région";
            [cell.ImageChat setHidden:YES];
            [cell.NomChat setHidden:YES];
            [cell.DateVisite setHidden:YES];
            [cell.VilleChat setHidden:YES];
            [cell.AgeChat setHidden:YES];
            [cell.OnlineChat setHidden:YES];
            [cell setUserInteractionEnabled:NO];
            return cell;
        }
        
        NSString *url = [[tableArray objectAtIndex:indexPath.row] valueForKey:@"photo_square_120"];
        [[cell ImageChat] setImageWithURL:[NSURL URLWithString:url] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
        
        cell.NomChat.text = [[tableArray objectAtIndex:indexPath.row] valueForKey:@"first_name"];
        
        NSString *age = [NSString stringWithFormat:@"%@ ans", [[tableArray objectAtIndex:indexPath.row] valueForKey:@"age"]];
        cell.AgeChat.text = age;
        
        cell.VilleChat.text = [[tableArray objectAtIndex:indexPath.row] valueForKey:@"city"];
        
        NSString *visitDate = [[tableArray objectAtIndex:indexPath.row] valueForKey:@"visit_date"];
        visitDate = [NSString stringWithFormat:@"%@/%@/%@", [visitDate substringFromIndex:6], [visitDate substringWithRange:NSMakeRange(4, 2)], [visitDate substringToIndex:4]];
        
        cell.DateVisite.text = visitDate;
       
        
        return cell;
    }
    Mais malheureusement cette cellule s'affiche plusieurs fois dans mon tableau ce qui m'embête beaucoup et je comprend pas pourquoi

    la photo du problème


    N'hésitez pas à demander plus de précision et merci d'avance pour vos réponse.

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2012
    Messages : 57
    Points : 74
    Points
    74
    Par défaut
    Bon j'ai trouvé la solution

    dans la methode "cellForRowAtIndexPath:" je dois recrée une UITableViewCell vierge dès que je vois ma clé "opened" ce qui me donne un truc du genre

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        
        static NSString *rechercheTableIdentifier = @"RechercheIdentifier";
        
        RechercheCell *cell = [tableView dequeueReusableCellWithIdentifier:rechercheTableIdentifier];
        
        if (cell==nil)
        {
            NSArray *omg = [[NSBundle mainBundle] loadNibNamed:@"RechercheCell" owner:nil options:nil];
            for (id currentObject in omg)
            {
                if ([currentObject isKindOfClass:[RechercheCell class]])
                {
                    cell = (RechercheCell *)currentObject;
                    break;
                }
            }
        }
        
        if (tableArray==nil)
            return cell;
        
        
        // set Cell
        
        if ([[[tableArray objectAtIndex:indexPath.row] valueForKey:@"opened"] isEqualToString:@"criteria"])
        {
            NSLog(@"omg");
            UITableViewCell *cell2 = [[UITableViewCell alloc] init];
            UIWebView *web = [[UIWebView alloc] initWithFrame:CGRectMake(-25, 45, 360, 148)];
            
            NSString *h = @"<p style=\"font-family:helvetica;text-align:center;font-weight:bold;\">Pour plus de rencontres,<br> nous élargissons votre recherche.</p>";
            [web setUserInteractionEnabled:NO];
            [web loadHTMLString:h baseURL:nil];
            [cell2 setUserInteractionEnabled:NO];
            
            [cell2 addSubview:web];
            
            if (next)
            {
                [self dataCellNext];
                next=false;
            }
            
            return cell2;
        }
        else
        {
            
            NSString *url = [[tableArray objectAtIndex:indexPath.row] valueForKey:@"photo_square_120"];
            [[cell ImageCell] setImageWithURL:[NSURL URLWithString:url] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
            
            cell.NameCell.text = [[tableArray objectAtIndex:indexPath.row] valueForKey:@"first_name"];
            
            NSString *age = [NSString stringWithFormat:@"%@ ans", [[tableArray objectAtIndex:indexPath.row] valueForKey:@"age"]];
            cell.AgeCell.text = age;
            
            cell.CityCell.text = [[tableArray objectAtIndex:indexPath.row] valueForKey:@"city"];
            
            NSString *visitDate = [[tableArray objectAtIndex:indexPath.row] valueForKey:@"visit_date"];
            visitDate = [NSString stringWithFormat:@"%@/%@/%@", [visitDate substringFromIndex:6], [visitDate substringWithRange:NSMakeRange(4, 2)], [visitDate substringToIndex:4]];
            
            cell.LastVisiteCell.text = visitDate;
            
            if (next)
            {
                [self dataCellNext];
                next=false;
            }
            
            
            return cell;
        }
    }
    Je met le post en résolu.

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

Discussions similaires

  1. iTextSharp - Ajout d'une cellule dans un tableau
    Par infosam76 dans le forum C#
    Réponses: 2
    Dernier message: 17/12/2013, 17h42
  2. [XL-2003] ajouter / dans une cellule (date)
    Par sheep300 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/10/2011, 12h08
  3. Ajouter une cellule à une selection
    Par madislak dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/06/2006, 09h09
  4. [VBA-E]ajouter 2 heure à une date récupéré d'une cellule
    Par amel95140 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/06/2006, 08h55
  5. ajout d'une cellule à un input
    Par zola dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/05/2006, 16h50

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