My tableview cell content repeats on scrolling and reloading the Data.
I also know that changing the reuse identifier to nill will solve the issue but I need to use the reuse identifier due to the reason mentioned in this link IOS 7 UITextField resignFirstResponder BAD
Is there any other way that i can solve the repeating problem (along with reusing cells)
here is my code
CODE
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
static NSString *CellIdentifier = #"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.textLabel.font = [UIFont boldSystemFontOfSize:14];
cell.textLabel.textColor = [UIColor myPlaceholderColor];
switch (indexPath.section) {
case 0:{
if (indexPath.row == 0) {
static NSString *ProfileTableIdentifier = #"ProfileCell";
ProfileCell *profilecell = (ProfileCell *)[tableView dequeueReusableCellWithIdentifier:ProfileTableIdentifier];
if (profilecell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:#"ProfileCell" owner:self options:nil];
profilecell = [nib objectAtIndex:0];
}
profilecell.photoText.text = #"Photo";
profilecell.photoText.hidden = YES;
profilecell.seperatorView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:#"TableMiddleBackground.png"]];
profilecell.leftImage1.image = [UIImage imageNamed:#"single tag.png"];
profilecell.leftImage2.image = [UIImage imageNamed:#"tag.png"];
profilecell.profileName.placeholder = #"Profile Name";
profilecell.profileName.tag = 1;
profilecell.profileName.autocapitalizationType = UITextAutocapitalizationTypeNone;
profilecell.userName.placeholder = #"Username";
profilecell.userName.tag = 2;
profilecell.userName.autocapitalizationType = UITextAutocapitalizationTypeNone;
profilecell.avatarImageView.layer.masksToBounds = YES;
profilecell.avatarImageView.layer.cornerRadius = 6.0f;
[profilecell.imageViewTap addTarget:self action:#selector(takePicture:)];
if ([profileName length] != 0 ) {
profilecell.profileName.text = profileName;
}
if ([userName length] != 0 ) {
profilecell.userName.text = userName;
}
if (imageSelected){
profilecell.avatarImageView.image = avatarImage;
}else if ([profileImageUrl length] != 0 ) {
profilecell.avatarImageView.imageURL = [NSURL URLWithString:profileImageUrl];
}else {
profilecell.avatarImageView.image = [UIImage imageNamed:#"adduser.png"];
}
return profilecell;
}else{
UIImageView *customImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 44,44)];
customImage.image =[UIImage imageNamed:#"profile bio.png"];
customImage.contentMode = UIViewContentModeCenter;
[cell.contentView addSubview:customImage];
profileBioField = [[MyTextView alloc]initWithFrame:CGRectMake(40, 5, 250, MAX(35, profileBioRowHeight))];
profileBioField.placeholder = #"Profile Bio";
profileBioField.backgroundColor = [UIColor clearColor];
profileBioField.font = [UIFont boldSystemFontOfSize:14];
profileBioField.delegate = self;
profileBioField.scrollEnabled = NO;
//profileBioField.editable = NO;
profileBioField.dataDetectorTypes = UIDataDetectorTypeAll;
profileBioField.autocapitalizationType = UITextAutocapitalizationTypeNone;
profileBioField.keyboardType = UIKeyboardTypeASCIICapable;
[cell.contentView addSubview:profileBioField];
if ([profileBio length] != 0 ) {
profileBioField.text = profileBio;
}
return cell;
}
}
break;
case 1:{
if ([fbName length] ==0) {
cell.textLabel.text = #"Use Your account info";
cell.accessoryView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:#"arrow.png"]];
}else{
cell.textLabel.text = [NSString stringWithFormat:#"Logged in as %#",name];
cell.accessoryView = nil;
}
cell.textLabel.font = [UIFont boldSystemFontOfSize:14];
cell.textLabel.textColor = [UIColor myPlaceholderColor];
return cell;
}break;
case 2:{
if (indexPath.row == 0) {
static NSString *CellIdentifier = #"GenderCell";
UITableViewCell *gendercell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (gendercell == nil) {
gendercell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
gendercell.selectionStyle = UITableViewCellSelectionStyleNone;
male = [UIButton buttonWithType:UIButtonTypeCustom];
male.frame = CGRectMake(10, 2, 45, 40);
[male setBackgroundImage:[UIImage imageNamed:#"men in gray.png"] forState:UIControlStateNormal];
[male setBackgroundImage:[UIImage imageNamed:#"men in blue.png"] forState:UIControlStateSelected];
[male addTarget:self action:#selector(maleClicked:) forControlEvents:UIControlEventTouchUpInside];
[gendercell.contentView addSubview:male];
female = [UIButton buttonWithType:UIButtonTypeCustom];
female.frame = CGRectMake(65, 2, 45, 40);
[female setBackgroundImage:[UIImage imageNamed:#"women in gray.png"] forState:UIControlStateNormal];
[female setBackgroundImage:[UIImage imageNamed:#"women in blue.png"] forState:UIControlStateSelected];
[female addTarget:self action:#selector(femaleClicked:) forControlEvents:UIControlEventTouchUpInside];
[gendercell.contentView addSubview:female];
if ([gender isEqualToString: #"male"]) {
[male setSelected:YES];
}else if ([gender isEqualToString: #"female"]){
[female setSelected:YES];
}
return gendercell;
}else if(indexPath.row == 1) {
UIImageView *customImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 44,44)];
customImage.image =[UIImage imageNamed:#"phone.png"];
customImage.contentMode = UIViewContentModeCenter;
[cell.contentView addSubview:customImage];
phoneNumberField = [[MyTextField alloc]initWithFrame:CGRectMake(50, 7, 250, 30)];
phoneNumberField.tag = 3;
phoneNumberField.font = [UIFont boldSystemFontOfSize:14];
phoneNumberField.delegate = self;
[cell.contentView addSubview:phoneNumberField];
phoneNumberField.placeholder = #"Phone Number";
phoneNumberField.keyboardType = UIKeyboardTypePhonePad;
phoneNumberField.textColor = [UIColor darkGrayColor];
phoneNumberField.clearButtonMode = UITextFieldViewModeWhileEditing;
if ([phoneNumber length] != 0) {
phoneNumberField.text = phoneNumber;
}
} else if(indexPath.row == 2) {
UIImageView *customImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 44,44)];
customImage.image =[UIImage imageNamed:#"mail box icon.png"];
customImage.contentMode = UIViewContentModeCenter;
[cell.contentView addSubview:customImage];
emailIdField = [[MyTextField alloc]initWithFrame:CGRectMake(50, 7, 250, 30)];
emailIdField.tag = 4;
emailIdField.font = [UIFont boldSystemFontOfSize:14];
emailIdField.delegate = self;
[cell.contentView addSubview:emailIdField];
emailIdField.placeholder = #"Email Address";
emailIdField.keyboardType = UIKeyboardTypeEmailAddress;
emailIdField.autocapitalizationType = UITextAutocapitalizationTypeNone;
emailIdField.textColor = [UIColor darkGrayColor];
emailIdField.clearButtonMode = UITextFieldViewModeWhileEditing;
emailIdField.autocorrectionType = UITextAutocorrectionTypeNo;
if ([emailId length] != 0) {
emailIdField.text = emailId;
}
} else if(indexPath.row == 3) {
UIImageView *customImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 44,44)];
customImage.image =[UIImage imageNamed:#"location.png"];
customImage.contentMode = UIViewContentModeCenter;
[cell.contentView addSubview:customImage];
locationField = [[MyTextField alloc]initWithFrame:CGRectMake(50, 7, 250, 30)];
locationField.tag = 5;
locationField.font = [UIFont boldSystemFontOfSize:14];
locationField.delegate = self;
[cell.contentView addSubview:locationField];
locationField.placeholder = #"Location";
locationField.textColor = [UIColor darkGrayColor];
locationField.clearButtonMode = UITextFieldViewModeWhileEditing;
if ([location length] != 0) {
locationField.text = location;
}
} else if(indexPath.row == 4) {
UIImageView *customImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 44,44)];
customImage.image =[UIImage imageNamed:#"education.png"];
customImage.contentMode = UIViewContentModeCenter;
[cell.contentView addSubview:customImage];
educationField = [[MyTextField alloc]initWithFrame:CGRectMake(50, 7, 250, 30)];
educationField.tag = 6;
educationField.font = [UIFont boldSystemFontOfSize:14];
educationField.delegate = self;
[cell.contentView addSubview:educationField];
educationField.placeholder = #"Education";
educationField.textColor = [UIColor darkGrayColor];
educationField.clearButtonMode = UITextFieldViewModeWhileEditing;
if ([educationtxt length] != 0) {
educationField.text = educationtxt;
}
} else if(indexPath.row == 5) {
UIImageView *customImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 44,44)];
customImage.image =[UIImage imageNamed:#"birthday.png"];
customImage.contentMode = UIViewContentModeCenter;
[cell.contentView addSubview:customImage];
birthdayField = [[MyTextField alloc]initWithFrame:CGRectMake(50, 7, 250, 30)];
birthdayField.tag = 7;
birthdayField.font = [UIFont boldSystemFontOfSize:14];
birthdayField.delegate = self;
[cell.contentView addSubview:birthdayField];
birthdayField.placeholder = #"Birthday";
birthdayField.textColor = [UIColor darkGrayColor];
birthdayField.clearButtonMode = UITextFieldViewModeWhileEditing;
if ([birthDay length] != 0) {
birthdayField.text = birthDay;
}
}
}
break;
case 3:{
if (indexPath.row == 0) {
UIImageView *customImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 44,44)];
customImage.image =[UIImage imageNamed:#"keynew.png"];
customImage.contentMode = UIViewContentModeCenter;
[cell.contentView addSubview:customImage];
passwordField = [[MyTextField alloc]initWithFrame:CGRectMake(50, 7, 250, 30)];
passwordField.tag = 8;
passwordField.font = [UIFont boldSystemFontOfSize:14];
passwordField.delegate = self;
[cell.contentView addSubview:passwordField];
passwordField.placeholder = #"Create Password";
passwordField.keyboardType = UIKeyboardTypeASCIICapable;
passwordField.textColor = [UIColor darkGrayColor];
passwordField.clearButtonMode = UITextFieldViewModeWhileEditing;
passwordField.secureTextEntry = YES;
if ([password length] != 0 ) {
passwordField.text = password;
}
} else {
}
}break;
case 4:{
UIImageView *customImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 44,44)];
customImage.image =[UIImage imageNamed:#"camera.png"];
customImage.contentMode = UIViewContentModeCenter;
//[cell.contentView addSubview:customImage];
cell.imageView.image = [UIImage imageNamed:#"camera.png"];
cell.textLabel.text = #"Enable Camera";
TTSwitch *squareThumbSwitch = [[TTSwitch alloc] initWithFrame:(CGRect){ CGPointZero, { 76.0f, 27.0f } }];
squareThumbSwitch.trackImage = [UIImage imageNamed:#"square-switch-track"];
squareThumbSwitch.overlayImage = [UIImage imageNamed:#"square-switch-overlay"];
squareThumbSwitch.thumbImage = [UIImage imageNamed:#"square-switch-thumb"];
squareThumbSwitch.thumbHighlightImage = [UIImage imageNamed:#"square-switch-thumb-highlight"];
squareThumbSwitch.trackMaskImage = [UIImage imageNamed:#"square-switch-mask"];
squareThumbSwitch.thumbMaskImage = nil; // Set this to nil to override the UIAppearance setting
squareThumbSwitch.thumbInsetX = -3.0f;
squareThumbSwitch.thumbOffsetY = -3.0f; // Set this to -3 to compensate for shadow
[squareThumbSwitch setOn:[UserDefaults privacyStatus]];
[squareThumbSwitch addTarget:self action:#selector(cameraChanged:) forControlEvents:UIControlEventValueChanged];
cell.accessoryView = squareThumbSwitch;
return cell;
}break;
default:
break;
}
return cell;
}
Profile Cell is a UITableViewCell. You cant assign it with a view. Instead of using
ProfileCell *profilecell = (ProfileCell *)[tableView dequeueReusableCellWithIdentifier:ProfileTableIdentifier];
if (profilecell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:#"ProfileCell" owner:self options:nil];
profilecell = [nib objectAtIndex:0];
}
Use only one line
[[NSBundle mainBundle] loadNibNamed:#"ProfileCell" owner:self options:nil];
Related
I am having issues with the speed in which my tableview Cells scroll. You can see that it hangs up when dequeuing and reusing a cell. Below is my code that I use to create the cells. I am using 2 custom cells and one cell is if there is a image and the other cell is if the user didn't attach an image. Any insight would be greatly appreciated. I should also add that I wanted to add a space between the cells so basically I create a new section containing a single cell and that is why you will always see in my code indexPath.section.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *imageCell = #"ShameImage";
static NSString *noImageCell = #"ShameNoImageCell";
static NSString *noCell = #"NoCell";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:noCell];
if ([[blobID objectAtIndex:indexPath.section] isEqualToNumber:[NSNumber numberWithInt:1]])
{
ShameViewCell *cell = (ShameViewCell *)[self.tableView dequeueReusableCellWithIdentifier:imageCell];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:#"ShameImageCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
CALayer *cellImageView = [cell.imageView layer];
[cellImageView setMasksToBounds:YES];
[cellImageView setCornerRadius:10.0];
IndicatorImageView *iiv = [[IndicatorImageView alloc] initWithFrame:CGRectMake(0, 0, 88, 88)];
[iiv setShameID:[[shameID objectAtIndex:indexPath.section] stringValue]];
iiv.tag = 999;
[iiv loadImageFromURL];
[cell.imageView addSubview:iiv];
cell.imageView.userInteractionEnabled = YES;
UITapGestureRecognizer *tapImage = [[UITapGestureRecognizer alloc]
initWithTarget:self action:#selector(openPicture:)];
tapImage.numberOfTapsRequired = 1;
[cell.imageView addGestureRecognizer:tapImage];
[cell.contentView.layer setCornerRadius:10];
[cell.contentView setBackgroundColor:[UIColor blackColor]];
[cell.contentView setAlpha:0.7f];
UIColor *insideColor = [UIColor colorWithRed:color_red green:color_green blue:color_blue alpha:1];
cell.lastShame.contentInset = UIEdgeInsetsMake(-11, -8, 0, 0);
[cell.lastShame setTextColor:insideColor];
[cell.lastShame setFont:[UIFont fontWithName:text_font_name size:14]];
cell.lastShame.text = [userShame objectAtIndex:indexPath.section];
[cell.shameDate setTextColor:insideColor];
[cell.shameDate setFont:[UIFont fontWithName:text_font_name size:11]];
cell.shameDate.text = [createDt objectAtIndex:indexPath.section];
[cell.userLabel setTextColor:insideColor];
[cell.userLabel setFont:[UIFont fontWithName:text_font_name size:11]];
cell.userLabel.text = [#"Post By: " stringByAppendingString:[userName objectAtIndex:indexPath.section]];
[cell.lastShame setBackgroundColor:[UIColor clearColor]];
return cell;
}
}else
{
ShameNoImage *cell = (ShameNoImage *)[self.tableView dequeueReusableCellWithIdentifier:noImageCell];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:#"ShameNoImageCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
CALayer *cellImageView = [cell.imageView layer];
[cellImageView setMasksToBounds:YES];
[cellImageView setCornerRadius:10.0];
[cellImageView setBorderWidth:1.0];
[cellImageView setBorderColor:[[UIColor whiteColor] CGColor]];
[cell.contentView.layer setCornerRadius:10];
[cell.contentView setBackgroundColor:[UIColor blackColor]];
[cell.contentView setAlpha:0.7f];
UIColor *insideColor = [UIColor colorWithRed:color_red green:color_green blue:color_blue alpha:1];
cell.shameLabel.contentInset = UIEdgeInsetsMake(-11, -8, 0, 0);
[cell.shameLabel setTextColor:insideColor];
[cell.shameLabel setFont:[UIFont fontWithName:text_font_name size:14]];
cell.shameLabel.text = [userShame objectAtIndex:indexPath.section];
[cell.dateLabel setTextColor:insideColor];
[cell.dateLabel setFont:[UIFont fontWithName:text_font_name size:11]];
cell.dateLabel.text = [createDt objectAtIndex:indexPath.section];
[cell.userLabel setTextColor:insideColor];
[cell.userLabel setFont:[UIFont fontWithName:text_font_name size:11]];
cell.userLabel.text = [#"Post By: " stringByAppendingString:[userName objectAtIndex:indexPath.section]];
[cell.shameLabel setBackgroundColor:[UIColor clearColor]];
return cell;
}
}
return cell;
}
The first thing that jumps out are the calls to setCornerRadius. A quick test would be to cut out that corner radius stuff to see if that helps your speed. If that's you're problem you'll have to switch to drawing with CG and a UIBezierPath.
The next thing to look at would be transparency and the number of subviews you are using. It's hard to tell with what is posted above but the more subviews, especially with alpha are going to mean more work compositing. But that can be hard to get around depending on your design but drawing with CG or using images can help.
I figured it out. I was recreating and drawing every cell. I needed to set the reuseIdentifier in the Cell's Subclass and then change the building the the table to be like this.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *imageCell = #"ShameImage";
static NSString *noImageCell = #"ShameNoImageCell";
ShameViewCell *iCell = (ShameViewCell *)[self.tableView dequeueReusableCellWithIdentifier:imageCell];
ShameNoImage *niCell = (ShameNoImage *)[self.tableView dequeueReusableCellWithIdentifier:noImageCell];
if ([[blobID objectAtIndex:indexPath.section] isEqualToNumber:[NSNumber numberWithInt:1]])
{
if (iCell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:#"ShameImageCell" owner:self options:nil];
iCell = [nib objectAtIndex:0];
CALayer *cellImageView = [iCell.imageView layer];
[cellImageView setMasksToBounds:YES];
IndicatorImageView *iiv = [[IndicatorImageView alloc] initWithFrame:CGRectMake(0, 0, 88, 88)];
[iiv setShameID:[[shameID objectAtIndex:indexPath.section] stringValue]];
iiv.tag = 999;
[iiv loadImageFromURL];
[iCell.imageView addSubview:iiv];
iCell.imageView.userInteractionEnabled = YES;
UITapGestureRecognizer *tapImage = [[UITapGestureRecognizer alloc]
initWithTarget:self action:#selector(openPicture:)];
tapImage.numberOfTapsRequired = 1;
[iCell.imageView addGestureRecognizer:tapImage];
[iCell.contentView setBackgroundColor:[UIColor blackColor]];
[iCell.contentView setAlpha:0.7f];
UIColor *insideColor = [UIColor colorWithRed:color_red green:color_green blue:color_blue alpha:1];
iCell.lastShame.contentInset = UIEdgeInsetsMake(-11, -8, 0, 0);
[iCell.lastShame setTextColor:insideColor];
[iCell.lastShame setFont:[UIFont fontWithName:text_font_name size:14]];
iCell.lastShame.text = [userShame objectAtIndex:indexPath.section];
[iCell.shameDate setTextColor:insideColor];
[iCell.shameDate setFont:[UIFont fontWithName:text_font_name size:11]];
iCell.shameDate.text = [createDt objectAtIndex:indexPath.section];
[iCell.userLabel setTextColor:insideColor];
[iCell.userLabel setFont:[UIFont fontWithName:text_font_name size:11]];
iCell.userLabel.text = [#"Post By: " stringByAppendingString:[userName objectAtIndex:indexPath.section]];
return iCell;
}else
{
[[iCell.imageView viewWithTag:999] removeFromSuperview];
IndicatorImageView *iiv = [[IndicatorImageView alloc] initWithFrame:CGRectMake(0, 0, 88, 88)];
[iiv setShameID:[[shameID objectAtIndex:indexPath.section] stringValue]];
iiv.tag = 999;
[iiv loadImageFromURL];
[iCell.imageView addSubview:iiv];
iCell.lastShame.text = [userShame objectAtIndex:indexPath.section];
iCell.shameDate.text = [createDt objectAtIndex:indexPath.section];
iCell.userLabel.text = [#"Post By: " stringByAppendingString:[userName objectAtIndex:indexPath.section]];
return iCell;
}
}else
{
if (niCell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:#"ShameNoImageCell" owner:self options:nil];
niCell = [nib objectAtIndex:0];
[niCell.contentView setBackgroundColor:[UIColor blackColor]];
[niCell.contentView setAlpha:0.7f];
UIColor *insideColor = [UIColor colorWithRed:color_red green:color_green blue:color_blue alpha:1];
niCell.shameLabel.contentInset = UIEdgeInsetsMake(-11, -8, 0, 0);
[niCell.shameLabel setTextColor:insideColor];
[niCell.shameLabel setFont:[UIFont fontWithName:text_font_name size:14]];
niCell.shameLabel.text = [userShame objectAtIndex:indexPath.section];
[niCell.dateLabel setTextColor:insideColor];
[niCell.dateLabel setFont:[UIFont fontWithName:text_font_name size:11]];
niCell.dateLabel.text = [createDt objectAtIndex:indexPath.section];
[niCell.userLabel setTextColor:insideColor];
[niCell.userLabel setFont:[UIFont fontWithName:text_font_name size:11]];
niCell.userLabel.text = [#"Post By: " stringByAppendingString:[userName objectAtIndex:indexPath.section]];
return niCell;
}else
{
niCell.shameLabel.text = [userShame objectAtIndex:indexPath.section];
niCell.dateLabel.text = [createDt objectAtIndex:indexPath.section];
niCell.userLabel.text = [#"Post By: " stringByAppendingString:[userName objectAtIndex:indexPath.section]];
return niCell;
}
}
return niCell;
}
In my tableview i have set xml data to display but until scroll it does not display all value. I have reloaded the tableview when i am getting my xml data. I also used [cell.contenView viewWithTag:tagnumber]; But still now its not Working...please help me anybody....
Data are coming and using NSLog i can get the value but not display until scroll.
One think i have to mention that i can see the my cellview and imageview but not showing lable data.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = #"MyIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
//cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];
cell.textLabel.font = [UIFont fontWithName:#"Helvetica" size:15.0];
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:#"arrow.png"]];
cell.accessoryView = imageView;
tableView.separatorColor = [UIColor clearColor];
tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
// THIS IS A VIEW ABOVE MY CELL NAME: cellView
cellView = [[[UIView alloc] initWithFrame:CGRectMake(0,0,290, 120)] autorelease];
cellView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:#"order_description_bg.png"]];
cellView.tag =10;
// THIS IS A IMAGEVIEW ABOVE MY cellView NAME: imgView
imgView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 15, 39, 36)];
imgView.image = [UIImage imageNamed:#"order_image.png"];
imgView.layer.borderColor = [UIColor blackColor].CGColor;
imgView.layer.borderWidth = 0.0f;
imgView.tag = 5;
// THIS IS A LABEL ABOVE MY cellView NAME: statusLabel
CGRect statusRect = CGRectMake(65, 0, 190, 18);
statusLabel = [[[UILabel alloc] initWithFrame:statusRect] autorelease];
statusLabel.textAlignment = UITextAlignmentLeft;
statusLabel.textColor = [UIColor blackColor];
statusLabel.font = [UIFont systemFontOfSize:12];
statusLabel.backgroundColor = [UIColor greenColor];
statusLabel.tag = 1;
[cell.contentView addSubview:cellView];
[cellView addSubview:statusLabel];
[cellView addSubview:imgView];
}
// [cell.contentView superview];
cellView = (UIView *)[cell.contentView viewWithTag:10];
imgView = (UIImageView *)[cellView viewWithTag:5];
statusLabel = (UILabel *)[cellView viewWithTag:1];
if(searching == YES && x<=inumOfRowAfterSearch){
NSLog(#"[[searchData objectAtIndex:m] intValue] is : %d",[[searchData objectAtIndex:inumOfRowAfterSearch] intValue]);
y = [[searchData objectAtIndex:inumOfRowAfterSearch] intValue];
cellView = (UIView *)[cell.contentView viewWithTag:10];
imgView = (UIImageView *)[cellView viewWithTag:5];
statusLabel = (UILabel *)[cellView viewWithTag:1];
if(pendingOrder == NO && todaysOrder == NO && x<=inumOfRowAfterSearch){
statusLabel.text = [NSString stringWithFormat:#"Status: %#",[[records objectAtIndex:y] objectAtIndex:1]];
}
else if(pendingOrder == YES && todaysOrder == NO && x<=inumOfRowAfterSearch){
statusLabel.text = [NSString stringWithFormat:#"Status: %#",[[records objectAtIndex:y] objectAtIndex:1]];
}
}
else{
cellView = (UIView *)[cell.contentView viewWithTag:10];
imgView = (UIImageView *)[cellView viewWithTag:5];
statusLabel = (UILabel *)[cellView viewWithTag:1];
if(pendingOrder == NO && todaysOrder == NO){
statusLabel.text = [NSString stringWithFormat:#"Status: %#",[[records objectAtIndex:indexPath.section] objectAtIndex:1]];
NSLog(#"status lable value: %#",statusLabel.text);
}
else if(pendingOrder == YES && todaysOrder == NO){
statusLabel.text = [NSString stringWithFormat:#"Status: %#",[[pendingRecords objectAtIndex:indexPath.section] objectAtIndex:1]];
}
}
return cell;
}
Before scroll the table.
After Scroll the tableview
Following codes are not necessary in each condition , since you have written the code outside of the condition. It seems duplicate.
cellView = (UIView *)[cell.contentView viewWithTag:10];
imgView = (UIImageView *)[cellView viewWithTag:5];
statusLabel = (UILabel *)[cellView viewWithTag:1];
And coming to your question, it seems initially it skips both if and else if conditions. Comment also the NSLogs and write NSLog in else part of the conditions.
Edit:
// [cell.contentView superview];
cellView = (UIView *)[cell.contentView viewWithTag:10];
imgView = (UIImageView *)[cellView viewWithTag:5];
statusLabel = (UILabel *)[cellView viewWithTag:1];
if(searching == YES && x<=inumOfRowAfterSearch){
NSLog(#"[[searchData objectAtIndex:m] intValue] is : %d",[[searchData objectAtIndex:inumOfRowAfterSearch] intValue]);
y = [[searchData objectAtIndex:inumOfRowAfterSearch] intValue];
if(pendingOrder == NO && todaysOrder == NO ){
statusLabel.text = [NSString stringWithFormat:#"Status: %#",[[records objectAtIndex:y] objectAtIndex:1]];
}
else if(pendingOrder == YES && todaysOrder == NO ){
statusLabel.text = [NSString stringWithFormat:#"Status: %#",[[records objectAtIndex:y] objectAtIndex:1]];
}
else
{
statusLabel.text = [NSString stringWithFormat:#"Status: None"];
}
}
else{
if(pendingOrder == NO && todaysOrder == NO){
statusLabel.text = [NSString stringWithFormat:#"Status: %#",[[records objectAtIndex:indexPath.section] objectAtIndex:1]];
NSLog(#"status lable value: %#",statusLabel.text);
}
else if(pendingOrder == YES && todaysOrder == NO){
statusLabel.text = [NSString stringWithFormat:#"Status: %#",[[pendingRecords objectAtIndex:indexPath.section] objectAtIndex:1]];
}
else
{
statusLabel.text = [NSString stringWithFormat:#"Status: None"];
}
}
return cell;
I have an UITableview controller which representing fetched XML data. For representing these data I used five UILabel. Now I have to add a searchbar at the top of the UITableview. So programmatically I have added a searchbar.
Now I have used searching theorem for search data from the UITableview. But It is not working. I can search data from UItableview when only one text in the UItableviewcell without any UIlabel or something else but in my UItableviewcell cell are taking five UILabel that's why it's becoming tough for me to search data from the UItableviewcell. For understanding I am attaching my code how I am representing my XML data in tableview cell.
This is my XML data representation in UITableviewCell...
static NSString *MyIdentifier = #"MyIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
cell.textLabel.font = [UIFont fontWithName:#"Helvetica" size:15.0];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:#"arrow.png"]];
cell.accessoryView = imageView;
cell.accessoryType = UITableViewCellSelectionStyleNone;
tableView.separatorColor = [UIColor clearColor];
tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
cellView = [[[UIView alloc] initWithFrame:CGRectMake(5,8,290, 120)] autorelease];
cellView.backgroundColor = [UIColor clearColor];
cellView.tag =10;
[cell.contentView addSubview:cellView];
imgView = [[UIImageView alloc] initWithFrame:CGRectMake(2, 40, 48, 48)];
imgView.image = [UIImage imageNamed:#"productbox.png"];
imgView.layer.borderColor = [UIColor blackColor].CGColor;
imgView.layer.borderWidth = 2.0;
imgView.tag = 5;
[cellView addSubview:imgView];
CGRect idLabelRect = CGRectMake(65, 0, 190, 18);
idLabel = [[[UILabel alloc] initWithFrame:idLabelRect] autorelease];
idLabel.textAlignment = UITextAlignmentLeft;
idLabel.textColor = [UIColor blackColor];
idLabel.font = [UIFont systemFontOfSize:12];
idLabel.backgroundColor = [UIColor clearColor];
idLabel.layer.borderColor = [UIColor grayColor].CGColor;
idLabel.tag = 0;
CGRect statusRect = CGRectMake(65, 22, 190, 22);
statusLabel = [[[UILabel alloc] initWithFrame:statusRect] autorelease];
statusLabel.textAlignment = UITextAlignmentLeft;
statusLabel.textColor = [UIColor blackColor];
statusLabel.font = [UIFont systemFontOfSize:12];
statusLabel.backgroundColor = [UIColor clearColor];
statusLabel.layer.borderColor = [UIColor grayColor].CGColor;
statusLabel.tag = 1;
CGRect orderDateRect = CGRectMake(65, 48, 190, 22);
orderDate = [[[UILabel alloc] initWithFrame:orderDateRect] autorelease];
orderDate.textAlignment = UITextAlignmentLeft;
orderDate.textColor = [UIColor blackColor];
orderDate.font = [UIFont systemFontOfSize:12];
orderDate.backgroundColor = [UIColor clearColor];
orderDate.layer.borderColor = [UIColor grayColor].CGColor;
orderDate.tag = 2;
CGRect byRect = CGRectMake(65, 75, 190, 22);
byLabel = [[[UILabel alloc] initWithFrame:byRect] autorelease];
byLabel.textAlignment = UITextAlignmentLeft;
byLabel.textColor = [UIColor blackColor];
byLabel.font = [UIFont systemFontOfSize:12];
byLabel.backgroundColor = [UIColor clearColor];
byLabel.layer.borderColor = [UIColor grayColor].CGColor;
byLabel.tag = 3;
CGRect totalRect = CGRectMake(65, 98, 190, 22);
totalLabel = [[[UILabel alloc] initWithFrame:totalRect] autorelease];
totalLabel.textAlignment = UITextAlignmentLeft;
totalLabel.textColor = [UIColor blackColor];
totalLabel.font = [UIFont systemFontOfSize:12];
totalLabel.backgroundColor = [UIColor clearColor];
totalLabel.layer.borderColor = [UIColor grayColor].CGColor;
totalLabel.tag = 4;
[cellView addSubview:idLabel];
[cellView addSubview:statusLabel];
[cellView addSubview:orderDate];
[cellView addSubview:byLabel];
[cellView addSubview:totalLabel];
}
if(searching == YES){
//[cell setText:[tableData objectAtIndex:indexPath.row]];
cell.textLabel.text = [tableData objectAtIndex:indexPath.row];
}
else{
cellView = (UIView *)[cell.contentView viewWithTag:10];
idLabel = (UILabel *)[cellView viewWithTag:0];
statusLabel = (UILabel *)[cellView viewWithTag:1];
orderDate = (UILabel *)[cellView viewWithTag:2];
byLabel = (UILabel *)[cellView viewWithTag:3];
totalLabel = (UILabel *)[cellView viewWithTag:4];
imgView = (UIImageView *)[cellView viewWithTag:5];
if(pendingOrder == NO && todaysOrder == NO){
idLabel.text = [NSString stringWithFormat:#"Order Id: %#",[[records objectAtIndex:indexPath.section] objectAtIndex:0]];
statusLabel.text = [NSString stringWithFormat:#"Status: %#",[[records objectAtIndex:indexPath.section] objectAtIndex:1]];
orderDate.text = [NSString stringWithFormat:#"Date: %#",[[records objectAtIndex:indexPath.section] objectAtIndex:2]];
byLabel.text =[NSString stringWithFormat:#"By: %#",[[records objectAtIndex:indexPath.section] objectAtIndex:3]];
totalLabel.text =[NSString stringWithFormat:#"Total: %#",[[records objectAtIndex:indexPath.section] objectAtIndex:4]];
}
else if(pendingOrder == YES && todaysOrder == NO){
idLabel.text = [NSString stringWithFormat:#"Order Id: %#",[[pendingRecords objectAtIndex:indexPath.section] objectAtIndex:0]];
statusLabel.text = [NSString stringWithFormat:#"Status: %#",[[pendingRecords objectAtIndex:indexPath.section] objectAtIndex:1]];
orderDate.text = [NSString stringWithFormat:#"Date: %#",[[pendingRecords objectAtIndex:indexPath.section] objectAtIndex:2]];
byLabel.text =[NSString stringWithFormat:#"By: %#",[[pendingRecords objectAtIndex:indexPath.section] objectAtIndex:3]];
totalLabel.text =[NSString stringWithFormat:#"Total: %#",[[pendingRecords objectAtIndex:indexPath.section] objectAtIndex:4]];
}
}
return cell;
}
And this searching Delegate.....
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar{
searching = YES;
// only show the status bar’s cancel button while in edit mode
sBar.showsCancelButton = YES;
sBar.autocorrectionType = UITextAutocorrectionTypeNo;
// flush the previous search content
[tableData removeAllObjects];
}
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar{
searching = NO;
sBar.showsCancelButton = NO;
}
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{
[tableData removeAllObjects];// remove all data that belongs to previous search
if([searchText isEqualToString:#""] && searchText==nil){
[tableview reloadData];
return;
}
NSInteger counter = 0;
for(NSString *name in dataSource)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
NSRange r = [name rangeOfString:searchText];
if(r.location != NSNotFound)
{
if(r.location== 0)//that is we are checking only the start of the names.
{
[tableData addObject:name];
}
}
counter++;
[pool release];
}
[tableview reloadData];
}
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{
// if a valid search was entered but the user wanted to cancel, bring back the main list content
[tableData removeAllObjects];
searching = NO;
[tableData addObjectsFromArray:dataSource];
#try{
searching = NO;
[tableview reloadData];
}
#catch(NSException *e){
}
[sBar resignFirstResponder];
sBar.text = #"";
}
// called when Search (in our case “Done”) button pressed
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
[sBar resignFirstResponder];
}
For more help to understand i am also attaching my viewDidLoad....
//Add the search bar
sBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0,0,320,50)];
sBar.delegate = self;
searching = NO;
[self.view addSubview:sBar];
tableview.dataSource = self;
tableview.delegate = self;
//initialize the two arrays; datasource will be initialized and populated by appDelegate
searchData = [[NSMutableArray alloc] init];
tableData = [[NSMutableArray alloc] init];
[tableData addObjectsFromArray:dataSource];//on launch it should display all the records
Edit
This is my edited portion of numberOfSectionsInTableView and numberOfRowsInSection...
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
if(searching == YES){
searching = NO;
sectionCount = [tableData count];
}
else {
if(pendingOrder == NO && todaysOrder == NO){
sectionCount = [records count];
NSLog(#"section cout: %d",sectionCount);
}
else if(pendingOrder == YES && todaysOrder == NO){
//Total pending order counting
sectionCount = [pendingRecords count];
NSLog(#"section cout for pending: %d",sectionCount);
}
else if(pendingOrder == NO && todaysOrder == YES){
NSLog(#"todays order number counting");
}
}
return sectionCount;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 1;
}
Try this:-
copylistofItem is NSMutableArray copying data that matched with search bar criteria.
- (void) searchBarSearchButtonClicked:(UISearchBar *)theSearchBar {
NSString *searchText = searchBar.text;
NSMutableArray *searchArray = [[NSMutableArray alloc] init];
int i=0
for (NSString *str in [records objectAtIndex:indexPath.i] objectAtIndex:0])
{
[searchArray addObject:str];
i++;
}
for (NSString *sTemp in searchArray)
{
NSString *txtToSearch =[[NSString alloc] initWithString:[sTemp substringWithRange:NSMakeRange(0,[searchText length])]];
if([[txtToSearch lowercaseString] isEqualToString:[searchText lowercaseString]])
{
[copyListOfItems addObject:sTemp];
}
}
[searchArray release];
searchArray = nil;
}
Also we want to know what you have written in your numberOfSections tableView Delegate.
I have and NSArray with 5 string elements, populating an UITableView of my iPhone App.
Everything works fine, but sometimes the first string of my array is missing and I can't figure out why.
Here is my code:
arrayList = [[NSArray alloc] initWithObjects: #"My First String",
#"My Second String",
#"My Third String",
#"My Forth String",
#"My Fifth Sring",
nil];
The element that sometimes just doesn't show up is My First String
Actually I'm using this sample code from Cocoa With Love. Thanks guys for helping me!
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
#if USE_CUSTOM_DRAWING
const NSInteger TOP_LABEL_TAG = 1001;
// const NSInteger BOTTOM_LABEL_TAG = 1002;
UILabel *topLabel;
// UILabel *bottomLabel;
#endif
static NSString *CellIdentifier = #"Cell";
UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
//
// Create the cell.
//
cell =
[[[UITableViewCell alloc]
initWithFrame:CGRectZero
reuseIdentifier:CellIdentifier]
autorelease];
#if USE_CUSTOM_DRAWING
UIImage *indicatorImage = [UIImage imageNamed:#"image1.png"];
cell.accessoryView =
[[[UIImageView alloc]
initWithImage:indicatorImage]
autorelease];
const CGFloat LABEL_HEIGHT = 22;
UIImage *image = [UIImage imageNamed:#"image2.png"];
//
// Create the label for the top row of text
//
topLabel =
[[[UILabel alloc]
initWithFrame:
CGRectMake(
image.size.width + 2.0 * cell.indentationWidth,
0.5 * (aTableView.rowHeight - 1.3 * LABEL_HEIGHT),
aTableView.bounds.size.width -
image.size.width - 4.0 * cell.indentationWidth
- indicatorImage.size.width,
LABEL_HEIGHT)]
autorelease];
[cell.contentView addSubview:topLabel];
//
// Configure the properties for the text that are the same on every row
//
topLabel.tag = TOP_LABEL_TAG;
topLabel.backgroundColor = [UIColor clearColor];
topLabel.textColor = [UIColor colorWithRed:0.25 green:0.0 blue:0.0 alpha:1.0];
topLabel.highlightedTextColor = [UIColor colorWithRed:1.0 green:1.0 blue:0.9 alpha:1.0];
topLabel.font = [UIFont systemFontOfSize:[UIFont labelFontSize]];
topLabel.textAlignment = UITextAlignmentCenter;
/*
//
// Create the label for the bottom row of text
//
bottomLabel =
[[[UILabel alloc]
initWithFrame:
CGRectMake(
image.size.width + 2.0 * cell.indentationWidth,
0.5 * (aTableView.rowHeight - 2 * LABEL_HEIGHT) + LABEL_HEIGHT,
aTableView.bounds.size.width -
image.size.width - 4.0 * cell.indentationWidth
- indicatorImage.size.width,
LABEL_HEIGHT)]
autorelease];
[cell.contentView addSubview:bottomLabel];
//
// Configure the properties for the text that are the same on every row
//
bottomLabel.tag = BOTTOM_LABEL_TAG;
bottomLabel.backgroundColor = [UIColor clearColor];
bottomLabel.textColor = [UIColor colorWithRed:0.25 green:0.0 blue:0.0 alpha:1.0];
bottomLabel.highlightedTextColor = [UIColor colorWithRed:1.0 green:1.0 blue:0.9 alpha:1.0];
bottomLabel.font = [UIFont systemFontOfSize:[UIFont labelFontSize] - 2];
*/
//
// Create a background image view.
//
cell.backgroundView =
[[[UIImageView alloc] init] autorelease];
cell.selectedBackgroundView =
[[[UIImageView alloc] init] autorelease];
#endif
}
#if USE_CUSTOM_DRAWING
else
{
topLabel = (UILabel *)[cell viewWithTag:TOP_LABEL_TAG];
// bottomLabel = (UILabel *)[cell viewWithTag:BOTTOM_LABEL_TAG];
}
topLabel.text = [arrayList objectAtIndex:indexPath.row];
//bottomLabel.text = [NSString stringWithFormat:#"Some other information.", [indexPath row]];
// [cell LabelText:[arrayList objectAtIndex:indexPath.row]];
//
// Set the background and selected background images for the text.
// Since we will round the corners at the top and bottom of sections, we
// need to conditionally choose the images based on the row index and the
// number of rows in the section.
//
UIImage *rowBackground;
UIImage *selectionBackground;
NSInteger sectionRows = [aTableView numberOfRowsInSection:[indexPath section]];
NSInteger row = [indexPath row];
if (row == 0 && row == sectionRows - 1)
{
rowBackground = [UIImage imageNamed:#"topAndBottomRow.png"];
selectionBackground = [UIImage imageNamed:#"topAndBottomRowSelected_copy.png"];
}
else if (row == 0)
{
rowBackground = [UIImage imageNamed:#"topRow.png"];
selectionBackground = [UIImage imageNamed:#"topRowSelected_copy.png"];
}
else if (row == sectionRows - 1)
{
rowBackground = [UIImage imageNamed:#"bottomRow.png"];
selectionBackground = [UIImage imageNamed:#"bottomRowSelected_copy.png"];
}
else
{
rowBackground = [UIImage imageNamed:#"middleRow.png"];
selectionBackground = [UIImage imageNamed:#"middleRowSelected_copy.png"];
}
((UIImageView *)cell.backgroundView).image = rowBackground;
((UIImageView *)cell.selectedBackgroundView).image = selectionBackground;
if (row == 0)
{
cell.imageView.image = [UIImage imageNamed:#"pic1.png"];
}
else if (row == 1)
{
cell.imageView.image = [UIImage imageNamed:#"pic2.png"];
}
else if (row == 2)
{
cell.imageView.image = [UIImage imageNamed:#"pic3.png"];
}
else if (row == 3)
{
cell.imageView.image = [UIImage imageNamed:#"pic4.png"];
}
else if (row == 4)
{
cell.imageView.image= [UIImage imageNamed:#"pic5.png"];
}
#else
[cell LabelText:[arrayList objectAtIndex:indexPath.row]];
//cell.text = [NSString stringWithFormat:#"Cell at row %ld.", [indexPath row]];
#endif
return cell;
}
The issue you are probably having is accessing object 1 as index 1... Arrays in Objective-C are the same as most other C structured languages. Indexed starting at 0.
Put this code in.
for (int i = 0; i < [arrayList count]; i++)
{
NSLog(#"Item %d = %#", i, [arrayList objectAtIndex:i]);
}
Chances are good that this works fine.
If that is not the case the I would recommend restoring your iphone to factory default as either the operating system is malfunctioning, or you have other rogue processes that are corrupting memory.
To debug the code above. As you are grabbing the items out of the array I would put in an NSLog()
NSString *objectAtIndex = [arrayList objectAtIndex:indexPath.row];
NSLog(#"Row: %d, Object: %#, Count: %d",indexPath.row, objectAtIndex, [arrayList count]);
[cell LabelText:[arrayList objectAtIndex:indexPath.row]];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *CellIdentifier = #"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.text = [arrayList objectAtIndex:indexPath.row];
return cell;
}
Are you doing something similar to this for populating table view
NSMutableArray *ArrayList=[[NSMutableArray alloc]initWithObjects: #"My First String",
#"My Second String",
#"My Third String",
#"My Forth String",
#"My Fifth Sring",
nil];
I try this code but it's a mistake because i have a repetition of title and description...
Someone can help me please?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = #"Cell";
CustomCell *cell=(CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell==nil){
cell=[[[CustomCell alloc]initWithFrame:CGRectZero reuseIdentifier:CellIdentifier]autorelease];
cell.accessoryType = UITableViewCellAccessoryNone;
}
else{
AsyncImageView* oldImage = (AsyncImageView*)
[cell.contentView viewWithTag:999];
[oldImage removeFromSuperview];
}
NSString *mediaUrl = [[[[self rssParser]rssItems]objectAtIndex:indexPath.row]mediaUrl];
NSString *noimage=#"http://www.notizie-informatiche.com/wp-content/themes/arthemia/images/imagelogo.png";
if([mediaUrl isEqualToString:noimage] == FALSE){
//DISEGNO IL FRAME PER L'IMMAGINE
CGRect frameimmagine;
frameimmagine.size.width=100; frameimmagine.size.height=120;
frameimmagine.origin.x=0; frameimmagine.origin.y=0;
AsyncImageView* asyncImage = [[[AsyncImageView alloc] initWithFrame:frameimmagine] autorelease];
UIImage *myImage = [UIImage imageNamed:#"uknown.jpg"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:myImage];
[cell setAccessoryView:imageView];
//SCARICO L'IMMAGINE
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
asyncImage.tag = 999;
NSURL *url = [NSURL URLWithString: mediaUrl];
[asyncImage loadImageFromURL:url];
[cell.contentView addSubview:asyncImage];
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
//OTTENGO IL TITOLO
//cell.lbltitolo = [[[[self rssParser]rssItems]objectAtIndex:indexPath.row]title];
NSString *titolo = [[[[self rssParser]rssItems]objectAtIndex:indexPath.row]title];
//OTTENFO LA DESCRIZIONE
//cell.lblsottotitolo.text = [[[[self rssParser]rssItems]objectAtIndex:indexPath.row]description];
NSString *descrizione = [[[[self rssParser]rssItems]objectAtIndex:indexPath.row]description];
UILabel *cellatitoloconimmagine=[[UILabel alloc]init];
[cellatitoloconimmagine removeFromSuperview];
UILabel *cellatitolo=[[UILabel alloc]init];
[cellatitolo removeFromSuperview];
UILabel *celladescrizione=[[UILabel alloc]init];
[celladescrizione removeFromSuperview];
UILabel *celladescrizioneconimmagine=[[UILabel alloc]init];
[celladescrizioneconimmagine removeFromSuperview];
/*
[celladescrizioneconimmagine removeFromSuperview];
[celladescrizione removeFromSuperview];
*/
if([mediaUrl isEqualToString:noimage] == FALSE){
CGRect frametitoloconimmagine = CGRectMake(105.0f, 5.0f, 210, 40);
cellatitoloconimmagine.frame=frametitoloconimmagine;
cellatitoloconimmagine.text=titolo;
cellatitoloconimmagine.textAlignment = UITextAlignmentLeft;
cellatitoloconimmagine.font = [UIFont boldSystemFontOfSize:16];
cellatitoloconimmagine.numberOfLines = 2;
[cell.contentView addSubview:cellatitoloconimmagine];
CGRect framedescrizioneconimmagine = CGRectMake(105.0f, 55.0f, 210, 50);
celladescrizioneconimmagine.frame=framedescrizioneconimmagine;
celladescrizioneconimmagine.text=descrizione;
celladescrizioneconimmagine.textAlignment = UITextAlignmentLeft;
celladescrizioneconimmagine.font = [UIFont systemFontOfSize:14];
celladescrizioneconimmagine.numberOfLines = 3;
[cell.contentView addSubview:celladescrizioneconimmagine];
}
else {
CGRect frametitolo = CGRectMake(5.0f, 5.0f, 310, 40);
cellatitolo.frame=frametitolo;
cellatitolo.text=titolo;
cellatitolo.textAlignment = UITextAlignmentLeft;
cellatitolo.font = [UIFont boldSystemFontOfSize:16];
cellatitolo.numberOfLines = 2;
[cell.contentView addSubview:cellatitolo];
CGRect framedescrizione = CGRectMake(5.0f, 55.0f, 310, 50);
celladescrizione.frame=framedescrizione;
celladescrizione.textAlignment = UITextAlignmentLeft;
celladescrizione.font = [UIFont systemFontOfSize:14];
celladescrizione.numberOfLines = 3;
celladescrizione.text=descrizione;
[cell.contentView addSubview:celladescrizione];
}
return cell;
}
the cell identifier must be unique for unique cells. It seems you have repeated cells because they are all dequed with name #"cell". Also remove the "static" word.