Menu horizontal et chargement des données

Je n'ai pas été très inspiré pour l'intitulé du sujet....image/smile.png' class='bbc_emoticon' alt=':)' />



du coup je vais expliquer.



Sur un des viewController de mon appli, j'ai un menu horizontal dans un scrollView, et ce menu comporte 12 items (des catégories).



A l'arrivée sur le viewController je charge les éléments du premier item dans un tableView.



Mais comment dois-je m'organiser pour le chargement des éléments des autres catégories.



Faut-il que j'attende que l'utilisateur clique sur une catégorie pour faire la requête nécessaire?



Ou faut-il que lors du chargement du viewController je fasse une ASINetwokQueue qui charge en fond tout les éléments de toutes les catégories?



En gros, qu'est-ce qui est le plus approprié dans mon cas?



Merci

Réponses

  • StephSteph Membre
    En fait tout dépend du poids et de la quantité de données je dirais.



    Quand c'est sur une base interne, c'est rapide, tu peux donc te permettre de charger lors de la sélection, si te requêtes se font sur le web, c'est plus discutable. Pourquoi ne pas tout charger dans un fichier plist ou une base CoreData et travailler dessus ensuite, surtout que ça te permet de travailler offline. Bref, tout dépend du type d'application en fait !
  • AstramAstram Membre
    En fait toutes mes requêtes se font sur le web via des API.



    Je récupère une liste de produits pour chaque catégories, ( les 20 premiers à  la première requête, puis 20 autres lorsque le scroll est en bas). Donc ca fait beaucoup de données à  charger. Je me dit que 12 requêtes d'un seul coup ça fait beaucoup.
  • StephSteph Membre
    Alors fait les requêtes à  la demande avec une vue de chargement.



    il y a des images ?
  • AstramAstram Membre
    Oui en plus il y a des images.



    Je pense aussi faire la requête à  la demande de la catégorie, bien que ca puis géné l'utilisateur un chargement à  chaque catégorie, mais bon...
  • AstramAstram Membre
    mai 2012 modifié #6
    tant que je suis dans le même sujet pour mon appli, j'ai un problème que je ne comprend pas, je veux générer dynamiquement mon menu avec des boutons dans un srollView horizontal, mais je ne comprend pas pourquoi l'état UIControlStateSelected n'est pas pris en compte lorsque je sélectionne un bouton:


    <br />
    	for (int i=0; i&lt;12; i++) {<br />
    		UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];<br />
    		UIImage *normal=[UIImage imageNamed:@&quot;icon1&quot;];<br />
    		UIImage *selec=[UIImage imageNamed:@&quot;icon1down&quot;];<br />
    		[btn setFrame:CGRectMake(i*larg, 0, 42.0, 43.0)];<br />
    		[btn setBackgroundImage:normal forState:UIControlStateNormal];<br />
    		[btn setBackgroundImage:selec forState:UIControlStateSelected];<br />
    	  <br />
    		[scrollCat addSubview:btn];<br />
    		cx+=42.0;<br />
    	}<br />
    	[scrollCat setContentSize:CGSizeMake(cx, 43)];<br />
    




    bon la c'est un test avec toujours les mêmes images pour tous les boutons, mais ça ne fonctionne même pas.



    L'état normal est bon, mais lorsque je sélectionne un bouton, il ne reste pas sélectionné avec l'image voulue.
  • AliGatorAliGator Membre, Modérateur
    Les UIButton ne changent pas leur état selected tout seuls :

    - Quand ils sont "au repos", ils sont dans l'état Normal

    - Quand tu tap dessus, pendant que le doigt est dessus, ils sont dans l'état Highlighted

    - Quand tu enlèves ton doigt, ils reviennent dans l'état "Normal"



    Si tu veux un bouton qui "toggle", qui alterne ses états (un clic = sélectionné, un autre clic = désélectionné), il suffit dans l'action du bouton de mettre sender.selected = !sender.selected !

    Dans ce cas :

    - Au repos, l'état sera Selected puisque tu l'auras modifié par code

    - Quand tu tap dessus, le bouton passera dans l'état Selected|Highlighted (OU logique, combinaison des deux valeurs)

    - Quand tu enlèves ton doigt, il devrait repasser dans l'état Selected... sauf que si tu as mis le code en question qui inverse l'état selected, il va du coup revenir en Normal.
  • AstramAstram Membre
    Merci pour ta réponse, voilà  ce que j'ai essayer :


    <br />
    for (int i=0; i&lt;12; i++) {<br />
    			    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];<br />
    			    UIImage *normal=[UIImage imageNamed:@&quot;icon1&quot;];<br />
    			    UIImage *selec=[UIImage imageNamed:@&quot;icon1down&quot;];<br />
    			    [btn setFrame:CGRectMake(i*larg, 0, 42.0, 43.0)];<br />
    			    [btn setBackgroundImage:normal forState:UIControlStateNormal];<br />
    			    [btn setBackgroundImage:selec forState:(UIControlStateSelected|UIControlStateHighlighted)];<br />
             [btn addTarget:self action:@selector(buttonTouch:) forControlEvents:UIControlEventTouchUpInside];<br />
    			    [scrollCat addSubview:btn];<br />
    			    cx+=42.0;<br />
    	    }<br />
    	    [scrollCat setContentSize:CGSizeMake(cx, 43)];<br />
    






    et dans l'action j'ai récupérer le sender et appliqué sender.selected=!sender.selected :


    <br />
    -(void) buttonTouch:(id)sender {<br />
        UIButton *bouton=(UIButton *)sender;<br />
        bouton.selected=&#33;bouton.selected;<br />
    }<br />
    






    Mais ça ne fait toujours pas l'effet toogle, je me suis planté quelque part?
  • AliGatorAliGator Membre, Modérateur
    Bah tu coup tu as mis ton image "selec" pour l'état "selected+highlighted" donc elle ne sera utilisée que quand tu seras dans cette combinaison de 2 états, à  savoir à  la fois selected=YES ET pendant que ton doigt est sur le bouton.

    Si tu veux que l'image selec soit utilisée quand le bouton est dans l'etat selected=YES tout court au repos, c'est à  dire pas quand ton doigt est en train de faire le tap sur le bouton, c'est juste UIControlStateSelected.
Connectez-vous ou Inscrivez-vous pour répondre.