Note that there are some explanatory texts on larger screens.

plurals
  1. POUITableViewCell - overlapping with previous cells contents
    text
    copied!<p>I have this wierd problem with my table</p> <ol> <li>i Have about 20 cells to display</li> <li>Each cell is about 84px in height</li> <li>When i click no the cell, i have set a background colour</li> <li>The first 4 cells are ok, but when i scroll down and click on the 5th cell, the content of each cell starts to overlap with some other content, usually content from 1st 4 cells.</li> </ol> <p>I belive its some cell reusability or drawing issue. Am not sure how to solve it, i have checked through my code, but i am not changing the cell's content on touch.</p> <p>Here is my code and will add some pics too <img src="https://i.stack.imgur.com/N5cTm.png" alt="Cell with overlapped content"></p> <pre><code>- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 104; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [stores count]; } -(UITableViewCell *)tableView:(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; CGRect Label1Frame = CGRectMake(5, 5, 250, 30); CGRect Label2Frame = CGRectMake(6, 42, 220, 20); CGRect Label3Frame = CGRectMake(6, 62, 220, 20); CGRect Label4Frame = CGRectMake(240,56, 70, 12); UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if(cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease]; }else{ // a cell is being recycled, remove the old edit field (if it contains one of our tagged edit fields) UIView *viewToCheck = nil; viewToCheck = [cell.contentView viewWithTag:1]; if (!viewToCheck) { [viewToCheck removeFromSuperview]; DebugLog(@"View removed"); } } //cell.selectionStyle=UITableViewCellSelectionStyleNone; [cell setSelectedBackgroundView:bgView]; NSInteger row=indexPath.row; UILabel *lblTemp; [[cell contentView] clearsContextBeforeDrawing]; //Line 1 lblTemp=[[UILabel alloc] initWithFrame: Label1Frame]; lblTemp.tag=1; lblTemp.text=[[stores objectAtIndex:row] objectAtIndex:0] ; lblTemp.numberOfLines=2; lblTemp.font = [UIFont boldSystemFontOfSize:13]; lblTemp.adjustsFontSizeToFitWidth=YES; lblTemp.minimumFontSize=12; lblTemp.textColor = [UIColor grayColor]; [cell.contentView addSubview:lblTemp]; [lblTemp release]; //Line 2 lblTemp = [[UILabel alloc] initWithFrame:Label2Frame]; lblTemp.tag = 2; lblTemp.text=[[stores objectAtIndex:row]objectAtIndex:1]; lblTemp.font = [UIFont systemFontOfSize:12]; lblTemp.textColor = [UIColor grayColor ]; lblTemp.textAlignment=UITextAlignmentLeft; lblTemp.adjustsFontSizeToFitWidth=YES; lblTemp.minimumFontSize=12; [cell.contentView addSubview:lblTemp]; [lblTemp release]; //Line 3 lblTemp = [[UILabel alloc] initWithFrame:Label3Frame]; lblTemp.tag = 3; lblTemp.text=[[stores objectAtIndex:row]objectAtIndex:2]; lblTemp.font = [UIFont systemFontOfSize:12]; lblTemp.textColor = [UIColor grayColor ]; [cell.contentView addSubview:lblTemp]; [lblTemp release]; //Phone button UIButton *phoneButton=[[UIButton alloc] initWithFrame:CGRectMake(240,16,30,30)]; [phoneButton setBackgroundImage:[UIImage imageNamed:@"phone.png"] forState:UIControlStateNormal]; [phoneButton setTag:row]; [phoneButton addTarget:self action:@selector(dialNumber:) forControlEvents:UIControlEventTouchUpInside]; [cell.contentView addSubview:phoneButton]; //ANnotation button UIButton *annotation=[[UIButton alloc] initWithFrame:CGRectMake(274,16,30,30)]; [annotation setTag:row]; [annotation setBackgroundImage:[UIImage imageNamed:@"tab.png"] forState:UIControlStateNormal]; [annotation addTarget:self action:@selector(openMap:) forControlEvents:UIControlEventTouchUpInside]; [cell.contentView addSubview:annotation]; [annotation release]; //Distance label //Line 3 lblTemp = [[UILabel alloc] initWithFrame:Label4Frame]; lblTemp.tag = 4; lblTemp.text=[[stores objectAtIndex:row]objectAtIndex:5]; lblTemp.textAlignment=UITextAlignmentCenter; lblTemp.font = [UIFont systemFontOfSize:13]; lblTemp.textColor = [UIColor grayColor ]; [lblTemp setAdjustsFontSizeToFitWidth:YES]; [cell.contentView addSubview:lblTemp]; [phoneButton release]; [lblTemp release]; [cell setNeedsLayout]; [cell setNeedsDisplay]; return cell; } -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell=[tableView cellForRowAtIndexPath:indexPath ]; for(UILabel *lbl in cell.contentView.subviews){ if([lbl isKindOfClass:[UILabel class]]){ lbl.textColor=[UIColor whiteColor]; } } //UITableViewCell *cell1; //NSString *row=[NSString stringWithFormat:@"%d",indexPath.row]; svm = [[storesMapView alloc] initWithNibName:@"storesMapView" bundle:nil]; [svm initWithXML:stores:indexPath.row]; CGRect theFrame = svm.view.frame; theFrame.origin = CGPointMake(self.view.frame.size.width, 0); svm.view.frame = theFrame; theFrame.origin = CGPointMake(0,0); theFrame.size=CGSizeMake(320,355); [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.3f]; svm.view.frame = theFrame; [UIView commitAnimations]; [subView addSubview:svm.view]; backButton.hidden=NO; } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload