I have a tableview in which i am loading the cells from 2 different custom classes.and my code looks like this
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier1 = @"CellIdentifier";
static NSString *CellIdentifier2 = @"Cell";
if(messagesarray==nil||[messagesarray count]==0)
{
}
else
{
NSMutableDictionary *dicttable=[messagesarray objectAtIndex:indexPath.row];
NSString *head=[dicttable objectForKey:@"gfgfg"];
NSString *head1=[dicttable objectForKey:@"gfgfgf"];
if([type isEqualToString:@"m"])
{
if([head isEqualToString:@"NA"])
{
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier1];
if (cell == nil)
{
cell = [[[CustomCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier1] autorelease];
cell.backgroundView = [ [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"white_top_portion.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ]autorelease];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.nameLabel.text=head;
cell.msg.text=head1;
[cell.button addTarget:self action:@selector(callAction:) forControlEvents:UIControlEventTouchUpInside];
if(icon!=nil)
{
if(![[ImageCache sharedImageCache] hasImageWithKey:icon])
{
cell.myImageView.image = [UIImage imageNamed:@"fggtgf.png"];
NSArray *myArray = [NSArray arrayWithObjects:cell.myImageView,icon,@"fgfgfg.png",[NSNumber numberWithBool:NO],nil];
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate performSelectorInBackground:@selector(updateImageViewInBackground:) withObject:myArray];
}
else
{
cell.myImageView.image = [[ImageCache sharedImageCache] getImagefromCacheOrUrl:icon];
}
}
else
{
cell.myImageView.image = [UIImage imageNamed:@"fgfgfg.png"];
}
cell.label.text=sub;
return cell;
}
else
{
Customcellwithimage *cell = (Customcellwithimage *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier2];
if (cell == nil)
{
cell = [[[Customcellwithimage alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier2] autorelease];
cell.backgroundView = [ [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"white_deal_bg.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ]autorelease];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.datelabel1.text=subtitle;
cell.nameLabel1.text=head;
cell.msg1.text=head1;
if(icon!=nil)
{
if(![[ImageCache sharedImageCache] hasImageWithKey:icon])
{
cell.myImageView1.image = [UIImage imageNamed:@"fgfgfgf.png"];
NSArray *myArray = [NSArray arrayWithObjects:cell.myImageView1,icon,@"fgfgfgf.png",[NSNumber numberWithBool:NO],nil];
MFAppDelegate *appDelegate = (MFAppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate performSelectorInBackground:@selector(updateImageViewInBackground:) withObject:myArray];
}
else
{
cell.myImageView1.image = [[ImageCache sharedImageCache] getImagefromCacheOrUrl:icon];
}
}
else
{
cell.myImageView1.image = [UIImage imageNamed:@"fgfgfgf.png"];
}
cell.cellview1.image=[UIImage imageNamed:@"vf.png"];
cell.label1.text=sub;
[cell.button1 addTarget:self action:@selector(callAction:) forControlEvents:UIControlEventTouchUpInside];
cell.bannerview1.image=[UIImage imageNamed:@"vfgf.png"];
return cell;
}
}
}
}
My problem is only the first element in the array is priting repeatedly in the cells(cells repeating),can anybody help me to know why this is happening.I have array count number of sections and each section having only single row.
If each section only has a single row, then
indexPath.rowwill be 0 every time this method is called. Since the row is what you use to choose an array element, it’s reasonable that it will always be the same one.You need to use
indexPath.sectioninstead if you’re returning[messagesarray count]for the number of sections and 1 for the number of rows.