[Rà‰SOLU] Importer une vue .xib dans une UIView

BenjoBenjo Membre
août 2013 modifié dans API UIKit #1

Bonjour


 


Dans mon projet je souhaiterais importer une vue .xib dans une UIView. Pour cela, il me semblait que je pouvait utiliser un bout de code comme celui-ci :



CelluleTutoriel *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifiant forIndexPath:indexPath];

// On charge les vues
NSArray *listeVues = [[NSBundle mainBundle] loadNibNamed:@NomDeLaVue owner:self options:nil];
UIView *vue = [listeVues objectAtIndex:0];

cell.vue = vue;

Seulement, ce morceau de code ne marche pas, la vue reste blanche et n'affiche aucun des éléments qui sont dans mon .xib. Le problème pour moi vient du "cell.vue = vue" mais je ne sais pas comment procéder autrement.


 


Avez vous une idée ?


 


Merci d'avance :)


Mots clés:

Réponses

  • AliGatorAliGator Membre, Modérateur
    Elle vient d'où cette propriété ".vue" ??!?

    Sinon addSubview est quand même une méthode de base, non ?
  • BenjoBenjo Membre
    août 2013 modifié #3

    Merci AliGator pour ta réponse rapide. En fait, elle vient d'une classe, nommée CelluleTutoriel, dérivant de UICollectionViewCell. Je suis dans une collectionView où, dans chaque cellule j'ai une UIView nommée "vue" :



    @interface CelluleTutoriel : UICollectionViewCell

    @property (weak, nonatomic) IBOutlet UIView *vue;

    @end

    Cette classe est reliée à  ma vue .xib.


     


     



     


    Sinon addSubview est quand même une méthode de base, non ?

    Oui mais je me disais qu'il serait plus simple de créer un customCell plutôt que de supprimer et de ré-ajouter ma vue à  chaque fois. Je me trompe surement.


  • AliGatorAliGator Membre, Modérateur
    Heu... c'est pas en affectant une UIView à  la propriété ".vue" que magiquement cette vue va apparaà®tre dans ta cell hein ! Tu imaginais quoi, que de la magie vaudou allait faire apparaà®tre ta vue rien que parce que tu l'affectes à  une propriété qui s'appelle "vue" (en français dans le texte, en plus) ?!

    Et sinon, si toutes tes vues sont vraiment toutes différentes, pourquoi les recycler ? Pourquoi utiliser le reuse (qui a pour but d'éviter d'allouer des vues mais préférer les réutiliser si elles sont toutes sur le même schéma) s'il n'y a rien du tout à  réutiliser et qu'il n'y a vraiment aucun point commun entre chaque vue ?

    Et sinon si tu utilises quand même le reuse, bah y'a pas de magie. removeFromSuperview la old, addSubview la new, ça va de soi.
  • BenjoBenjo Membre
    août 2013 modifié #5

     


    Tu imaginais quoi, que de la magie vaudou allait faire apparaà®tre ta vue rien que parce que tu l'affectes à  une propriété qui s'appelle "vue" (en français dans le texte, en plus) ?!

    Non justement j'étais (presque) sûr que cela n'allait pas marcher mais bon j'ai quand même essayer.


     



     


    Et sinon, si toutes tes vues sont vraiment toutes différentes, pourquoi les recycler ? Pourquoi utiliser le reuse (qui a pour but d'éviter d'allouer des vues mais préférer les réutiliser si elles sont toutes sur le même schéma) s'il n'y a rien du tout à  réutiliser et qu'il n'y a vraiment aucun point commun entre chaque vue ?

    Oui pour moi ne pas utiliser le reuse serait la meilleur solution ce qui éviterai de recycler les cellules à  chaque fois.


    Mais à  ce moment là , comment ne pas utiliser le reuse ?


  • AliGatorAliGator Membre, Modérateur

    De la même manière que tu fais quand tu fais des static cells pour une TableView (voir le Table View Programming Guide)


  • Ok je vais aller regarder ça parce que j'ai l'habitude de le faire avec StoryBoard et j'ai oublié comment faire avec le code. Merci AliGator !


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