Plusieurs lignes d'un même "objet"

Salut à  tous :)


 


J'ai besoin de vos lumières, je fais la mises à  jour de Part of Fun et j'aimerais savoir s'il est possible de recopier sur plusieurs lignes les mêmes informations : 


 


Réponses

  • Euh, si t'as une UITableView, pourquoi ne pas faire une UITableViewCell custom ?


     


    Par contre, d'après ce que tu poses comme question me fait douter sur tes connaissances sur la partie POO...


  • Si je comprend bien ton problème, tu veux insérer le template que tu présente n fois dans ta vue.


     


    En gros les deux solutions que je vois sont celles que tu as cité :


    -une tableView ou tu fais n  cellule.


    -une scrollView qui contiendra n  subview de ton template.


     


    Après je vois pas trop le problème en faite...




  • Euh, si t'as une UITableView, pourquoi ne pas faire une UITableViewCell custom ?


     


    Par contre, d'après ce que tu poses comme question me fait douter sur tes connaissances sur la partie POO...




     


    Je n'ai pas de UITableView sinon oui j'aurais utilisé une UITableViewCell custom pour le moment j'ai 2 View ainsi qu'une Page View Controller afin que l'utilisateur peut slider entre l'équipe 1 et l'équipe 2

  • HorusHorus Membre
    décembre 2013 modifié #5


    Si je comprend bien ton problème, tu veux insérer le template que tu présente n fois dans ta vue.


     


    En gros les deux solutions que je vois sont celles que tu as cité :


    -une tableView ou tu fais n  cellule.


    -une scrollView qui contiendra n  subview de ton template.


     


    Après je vois pas trop le problème en faite...




    Exactement ça, mais je voudrais savoir si c'est mieux d'utiliser une tableView avec des Cell custom ou si l'utilisation de "subview de ton template" est mieux


     


    La subview est ce que je décris comme "[ /!\ Ce qui suis est une idée x) ]"  car n'ayant jamais utilisé cette méthode je ne savais pas si cela fonctionné pour mon cas


     


    à‰dit:


    N'ayant jamais utilisé la subview, le principe est de remplir une view avec objet (label, image ...) et de l'appeler n fois ? 


    Si oui j'utilise à  peut prêt le même principe pour l'affichage sous forme d'une Page View 


     


  • De ce que je vois sur ton screen, tu vas afficher une liste de ligne donc fais une tableView c'est le plus logique.


     


    En plus, les tableview gère mieux l'affichage des cellules et la charge en mémoire. ( je parle du dequeuereuse)


     


    En gros elle va charger les cellules visibles puis changer le contenu quand tu en cache une pour en afficher une autre. ( Si j'ai bien compris le système ).


    Donc si tu as 2 lignes à  afficher c'est un peu sortir le machine gun pour buter une puce mais quand tu commences à  avoir pas mal de lignes c'est beaucoup mieux. ( Et surtout quand c'est un nombre de lignes dynamique )


  • HorusHorus Membre
    décembre 2013 modifié #7

    D'accord j'aurais au maximum 5 lignes à  afficher et donc ce qui remplie ma View mais l'utilisateur peux slider (voir screen) et passé à  l'équipe 2. 


     


    Donc tu pense que la TableView serait le mieux ? car dans mon cas la gestion de la mémoire ne rentre pas vraiment en compte car il n'y aura jamais de cell masqué, ce que je souhaite et surtout accélérer le chargement de la vue. 


     


  • AliGatorAliGator Membre, Modérateur
    En gros tu veux faire ce qui a été présenté aux CocoaHeads Rennes #14.

    A savoir définir un composant dans un XIB (pas besoin que le File's Owner soit un UIViewController pour ça) et l'instancier plusieurs fois.
    Pour ça rien de plus facile, tu peux créer un XIB pour ton composant réutilisable, puis par code tu instancies un UINib (avec "nibWithNibName:bundle:") pour précharger ton XIB, et tu appelles dessus "instanciateWithOwner:options:" autant de fois que tu veux instancier ton composant réutilisable, et tu les places (addSubview) dans ta vue principale, aux positions que tu veux.

    Autre possibilité, surtout si tu veux placer ce composant réutilisable dans ton XIB et pas par code, c'est celle qui a été présentée aux CocoaHeads, à  savoir toujours faire un XIB contenant ton composant, et de le charger dans le initWithCoder du ".m" du composant (dans l'exemple cette fois avec "-[NSBundle loadNibNamed:... owner:... options:..." pour instancier les vues définies dans ce XIB, même si une méthode de classe qui crée le UINib dans dispatch_once aurait été bien mieux pour éviter de recharger le XIB à  chaque fois, mais bon passons) pour que le composant .m charge lui-même son propre XIB.

    Dans tous les cas le principe de base reste le même, faire ton composant dans un XIB et charger ce XIB avec UINib (avantage de la reusabilité) ou avec "loadNibNamed:" pour ajouter cette vue en subview.
  • Oui mais est ce que c'est plus rentable qu'une TableView ? C'est ca la vrai question en faite...


  • AliGatorAliGator Membre, Modérateur
    décembre 2013 modifié #10
    Bah honnêtement entre faire une UITableViewCell dans un XIB dédié, ou faire une UIView dans un XIB dédié, ça prend pas plus de même temps.

    Sauf que un XIB pour instancier une UIView après tu peux placer ton UIView comme tu veux, alors qu'une UITableView t'impose que les vues soient forcément les unes sous les autres et espacées régulièrement etc.
  • SoldrasSoldras Membre
    décembre 2013 modifié #11

    Je parlais pas en temps d'écriture mais plus en performance en faite...


     


    Je sais faire les deux mais sa question est pertinente je trouve dans un cas comme celui-ci qu'elle est la meilleure façon de l'implémenter ?


     


    *Sens qu'il va faire des tests de performances avec instrument*




  • Oui mais est ce que c'est plus rentable qu'une TableView ? C'est ca la vrai question en faite...




     


    Oui voila :/ même si utiliser ta technique me ferais apprendre beaucoup de nouvelle chose, je pense qu'une TableView répondrait à  mes besoin.


     


    Par contre au niveau de :


    "As-tu déjà  utilisé une Page View ? Car j'ai un temps de chargement assez long lorsque je slide pour passer à  la page deux alors que les données sont tous téléchargé dans le :  "viewDidLoad" de Vision View (donc la view qui englobe tout)" 


    Vous avez une idée ?

  • Euh... tu as une vue qui contient une pageView qui contient tes pages ?


     


    Pourquoi ne pas faire un pageViewController directement ? :P


  • HorusHorus Membre
    décembre 2013 modifié #14


    Euh... tu as une vue qui contient une pageView qui contient tes pages ?


     


    Pourquoi ne pas faire un pageViewController directement ? :P




    Je me suis mal exprimé faut dire que c'est pas simple à  expliquer x) j'ai bien une PageViewController mais lorsque je slide de la vue 1 à  la vue 2 j'ai un temps de chargement 


  • HorusHorus Membre
    décembre 2013 modifié #15



     


    Donc d'après ce qu'on à  dit je vais modifier ma VisionContentView afin qu'elle contienne une TableView mais vous avez une idée d'ou peux venir la latence lors du slide de la vue 1 vers la vue 2 ?


     


    Edit : sachant que mon chargement des données se fait dans VisionView et que VisionContent contient mes images, label etc


     


    Edit2: je mange et je passe ma vue en TableView je vous tien au courant si le lag est encore présent ou pas


  • AliGatorAliGator Membre, Modérateur
    décembre 2013 modifié #16
    Commence par lancer Instruments pou savoir ce qui fait laguer. C'est pas la peine de s'acharner à  tester des patchs à  un endroit si le problème est ailleurs.
  • HorusHorus Membre
    décembre 2013 modifié #17

    je viens de faire des tests en faites il exécute deux fois la fonction d'aller chercher les informations (récupération JSON), le chargement des données ne se met pas dans la Vue "Global" elle se met dans le controller ?


     


    (rappel j'ai trois vue : Page View Controller, PageContent (contient les labels photo etc), Page Global (qui envoi les informations à  la page Content) 


     


    Edit : en train de re-lire la doc :x


     


    page_view_objects.png


     


    j'ai relu mon code et j'ai fais ça pour le moment : 


  • Dans ton archi y a juste truc que je comprend pas : pourquoi avoir le page global en faite ?


    Le pageviewcontroller et les pages suffisent je pense non ?

  • Dans ton archi y a juste truc que je comprend pas : pourquoi avoir le page global en faite ?


    Le pageviewcontroller et les pages suffisent je pense non ?




    Je me suis demandé la même chose vu que je n'avais jamais fait de Page View Controller j'ai regardé un tuto afin de mieux comprendre et mon code est tiré de ce tuto

    Voici le tuto :
    http://www.appcoda.com/uipageviewcontroller-storyboard-tutorial/

    Si quelqu'un peux y jeter un oe“il après c'est peut être au moment de l'adaptation à  mon appli que j'ai fait une boulette ...
  • Si tu veux en savoir plus je te conseil de lire ca :


    http://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/PageViewControllers.html


     


    Et de regarder ca :


     http://developer.apple.com/library/ios/samplecode/PhotoScroller/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010080


     


    J'ai lu rapidement ton tuto et de ce que je vois ils utilisent un ViewController en init pour appeler le PageViewController après sur le principe, ils restent sur un PageViewControllerqui contient ses pages.


  • Oui c'est ça que j'ai du mal à  comprendre le fait d'utiliser une vue pour appeler le Controller pourquoi ne pas juste utiliser le Controller et la viewContent ? 


     


    Je vais lire merci de ton aide.


Connectez-vous ou Inscrivez-vous pour répondre.