J'ai personnalisé la cellule avec quatre étiquettes, initialement cela semble bien, mais lorsque je fais défiler et que je sélectionne une cellule, les étiquettes d'une autre rangée se chevauchent. voici mon code. Toute aide sera grandement appréciée.étiquettes dans les chevauchements de cellules personnalisées
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *[email protected]"CellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier];
if (cell == nil) { cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier: CellIdentifier] autorelease];
}
NSString *cellIconName = [[self cellIcon] objectAtIndex:[indexPath row]];
cellImage=[UIImage imageNamed:cellIconName];
cell.imageView.image=cellImage;
UILabel *labelOne = [[UILabel alloc]initWithFrame:CGRectMake(65, 10, 140, 20)];
labelOne.text = [[NSString alloc]initWithFormat:@"%@",[dataList objectAtIndex:indexPath.row]];
[cell.contentView addSubview:labelOne];
[labelOne release];
UILabel *labelTwo = [[UILabel alloc]initWithFrame:CGRectMake(260, 10, 140, 20)];
labelTwo.text = [[NSString alloc]initWithFormat:@"%@",[newPrice objectAtIndex:indexPath.row]];
[cell.contentView addSubview:labelTwo];
[labelTwo release];
UILabel *label3 = [[UILabel alloc]initWithFrame:CGRectMake(65, 30, 140, 20)];
label3.text=[[NSString alloc]initWithFormat:@"%@",[details objectAtIndex:indexPath.row]];
[cell.contentView addSubview:label3];
[label3 release];
UILabel *label4 = [[UILabel alloc]initWithFrame:CGRectMake(260, 30, 140, 20)];
label4.text=[[NSString alloc]initWithFormat:@"%@",[oldPrice objectAtIndex:indexPath.row]];
[cell.contentView addSubview:label4];
[label4 release];
return cell;
}
Pouvez-vous expliquer pourquoi ce code est mieux que le code dans la question, ce serait rendre cette réponse digne d'un upvote. – jrturton
cela fonctionne ... pourriez-vous s'il vous plaît expliquer ce qui ne va pas avec mon code? – NoviceDeveloper
M.NoviceDeveloper et M.Jrturton. L'erreur est que vous avez alloué les étiquettes dans (else part) en dehors de la condition if si (cell == nil) '. Lorsque nous exécutons le code, le contrôle vérifie si la cellule est nulle ou possède des valeurs. Si nous allouons l'étiquette dans la partie else à chaque fois (en faisant défiler aussi), l'étiquette est en train d'allouer et récupère les valeurs d'un tableau. Si nous l'allouons en condition if, seulement une fois que le label est alloué pour chaque cellule et récupère les valeurs d'un tableau. Désolé pour mon mauvais anglais. C'est clair? Merci. –