Appel de deux cellules personnalisées différentes dans un problème UITableView

J'ai créé une cellule personnalisée FeatureCell qui a 5 images dans la ligne qui sera appelée dans la vue principale mais quand je l'appelle, je reçois une ligne vide. Alors, s'il vous plaît, où pourrait être mon problème?

J'ai fait des searchs sur les cellules personnalisées et j'ai utilisé le code que je dois utiliser dans le code ci-dessous mais rien ne se passe.

Ceci est mon FeatureCell.h

@interface FeatureCell : UITableViewCell{ IBOutlet UIImageView *img1; IBOutlet UIImageView *img2; } @property (nonatomic, retain) UIImageView *img1; @property (nonatomic, retain) UIImageView *img2; @end 

C'est ma FeatureCell.m

 @implementation FeatureCell @synthesize img,img1,img2,img3,img4; @end 

C'est le my view-controller .m

 - (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView{ return 2; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ if (section == 0) { return [objectCollection count]; } else{ return 1; } } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSSsortingng* cellIdentifier1 = @"FeatureCell"; FeatureCell *cell1 = (FeatureCell*)[tableView dequeueReusableCellWithIdentifier:cellIdentifier1]; if (cell1 == nil) { NSArray *nib = [[NSBundle mainBundle] loadNibNamed:cellIdentifier1 owner:nil options:nil]; cell1 = (FeatureCell*)[nib objectAtIndex:0]; } static NSSsortingng *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier]; } if ([indexPath section] == 0) { containerObject = [objectCollection objectAtIndex:indexPath.row]; [[cell textLabel] setText:containerObject.store]; cell.selectionStyle = UITableViewCellSelectionStyleNone; } else{ cell1.img1.image = [UIImage imageNamed:@"shower.png"]; cell1.img2.image = [UIImage imageNamed:@"parking.png"]; } return cell; } 

    Vous devez faire quelque chose comme ceci:

     - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.section == 0) { static NSSsortingng *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier]; } containerObject = [objectCollection objectAtIndex:indexPath.row]; [[cell textLabel] setText:containerObject.store]; cell.selectionStyle = UITableViewCellSelectionStyleNone; return cell; } else { static NSSsortingng* cellIdentifier1 = @"FeatureCell"; FeatureCell *cell1 = (FeatureCell*)[tableView dequeueReusableCellWithIdentifier:cellIdentifier1]; if (cell1 == nil) { NSArray *nib = [[NSBundle mainBundle] loadNibNamed:cellIdentifier1 owner:nil options:nil]; cell1 = (FeatureCell*)[nib objectAtIndex:0]; } cell1.img1.image = [UIImage imageNamed:@"shower.png"]; cell1.img2.image = [UIImage imageNamed:@"parking.png"]; return cell1; } } 

    Je pourrais avoir la condition if envers, donc vérifiez-le.

    Cette implémentation:

     @implementation FeatureCell @synthesize img,img1,img2,img3,img4; @end 

    Résultats dans une cellule avec certaines methods d'access mais aucune instance initialisée. Vous devez implémenter une méthode init pour créer les instances ou connecter les variables (que vous définissez comme des points de vente) au file XIB associé. Lisez ce guide .

    Je suis également d'accord avec les commentaires sur la structure de la création de vos différentes instances de cellules. C'est très désorganisé et vous semblez mélanger des references. Vous devez split les choses en différentes methods ou au less mettre le code pour créer les cellules à l'intérieur des instructions if afin que vous ne puissiez pas typer les noms des instances de cellules.

     - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

    { if (indexPath.row == 0) // pas indexPath.section … résolu mon problème

     { static NSSsortingng *CellIdentifier = @"MenuHeadingCustomCell"; MenuHeadingCustomCell *cell =[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell ==nil) { cell = [[MenuHeadingCustomCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } return cell; } else { static NSSsortingng* cellIdentifier1 = @"LevelViewCell"; LevelViewCell *cell1 =[tableView dequeueReusableCellWithIdentifier:cellIdentifier1]; if (cell1 ==nil) { cell1 = [[LevelViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier1]; // row counts which dictionary entry to load: _Dictionary=[_array objectAtIndex:indexPath.row]; cell1.LevelTitleText.text =[NSSsortingng ssortingngWithFormat:@"%@",[_Dictionary objectForKey:@"LevelLabelText"]]; cell1.LevelSubText.text =[NSSsortingng ssortingngWithFormat:@"%@",[_Dictionary objectForKey:@"LevelLabelSubText"]]; cell1.LevelThumb.image =[UIImage imageNamed:[_Dictionary objectForKey:@"LevelLabelThumb"]]; } return cell1; }