Sélectionner une UICollectionViewCell dans une UiTableViewCell

Bonjour,


 


J'ai une UiTableViewCell statique dans mon UITableView. Cette UITableViewCell contient une UICollectionView. Jusque là  tout va bien !


 


Là  où ça se gâte, c'est quand je veux sélectionner une UICollectionViewCell : j'y arrive sur le simulateur en cliquant sur la touche Alt de mon clavier (comme si je simulais un pinch !) ; par contre sur mon iPhone, pas moyen de sélectionner une UICollectionViewCell !


 


J'ai essayé en désignant comme délégué de mon UICollectionView, soit mon UITableViewCell, soit mon UITableViewController : le résultat est le même dans les deux cas...


 


Savez-vous comment je peux faire en sorte que mon UICollectionView soit sélectionnable avec un simple touch ??


 


Merci d'avance !


Réponses

  • Jean-PhiJean-Phi Membre
    juin 2014 modifié #2

    Je vous mets un bout de code, ça peut aider...



    //
    // MeteoTableViewCell.h
    /
    #import <UIKit/UIKit.h>

    @interface MeteoTableViewCell : UITableViewCell< UICollectionViewDataSource,UICollectionViewDelegate>

    @end

    #import "MeteoTableViewCell.h"
    @interface MeteoTableViewCell (){
    NSArray *_meteoImages;
    }

    @end
    @implementation MeteoTableViewCell

    - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
    {
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
    }
    return self;
    }

    - (void)awakeFromNib
    {
    _meteoImages = [NSArray arrayWithObjects:@ciel_degage,@Ciel_voile, @Ciel_nuageux_avec_eclaircies,@Rares_eclaircies,@Variable,@Ciel_nuageux,@ciel_couvert,@Orages,@brouillard,@Soleil_et_rares_averses,@Soleil_et_averses,@Soleil_et_averses_orageuses,@Soleil_et_fortes_averses,@Giboulees,@Bruine,@Faibles_pluies,@Pluies_orageuses,@Fortes_pluies,@Pluies_verglacantes,@Grele,@Orages_de_grele,@Pluie_et_neige_melees,@Neige,@Forte_neige, nil];
    }


    - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
    return _meteoImages.count;
    }

    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@Cell forIndexPath:indexPath];
    UIImageView *meteoImageView = (UIImageView *)[cell viewWithTag:100];
    NSString *imageName=[_meteoImages objectAtIndex:indexPath.row];
    UIImage *meteoImage = [UIImage imageNamed:imageName];
    meteoImageView.image = meteoImage;
    if (cell.selected) {
    cell.backgroundColor = [UIColor colorWithRed:204/255.0f green:16/255.0f blue:70/255.0f alpha:0.7f];
    }
    else
    {
    cell.backgroundColor = nil; }
    return cell;
    }

    -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {

    UICollectionViewCell *datasetCell =[collectionView cellForItemAtIndexPath:indexPath];
    datasetCell.backgroundColor = [UIColor colorWithRed:204/255.0f green:16/255.0f blue:70/255.0f alpha:0.7f];}

    -(void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath {

    UICollectionViewCell *datasetCell =[collectionView cellForItemAtIndexPath:indexPath];
    datasetCell.backgroundColor = nil;
    }

    @end

  • Jean-PhiJean-Phi Membre
    juin 2014 modifié #3

    Bon ben c'est résolu... En fait j'ai une autre UITableViewCell qui contient une zone de texte et j'avais ajouté cela dans le UITableViewController pour virer le clavier :



    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
    initWithTarget:self
    action:@selector(dismissKeyboard)];
    [self.view addGestureRecognizer:tap

    Mais du coup, comment je peux enlever le clavier quand l'utilisateur clique en dehors de la zone de texte ?


  • Alors, la solution pour que l'événement "touch" soit passé aux autres "views", c'est d'ajouter cette ligne :



    tap.cancelsTouchesInView=NO;


    Comme cela mon clavier s'en va bien quand l'utilisateur touche l'écran en dehors de l'UITextView et mon UIControllerView est bien sélectionnable...


     


    Oui, oui, j'adore les monologues 8--)


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