reloadRowsAtIndexPaths Crashes
I have a tableview with four different types of cells. On each cell i need
to place an image and labels showing with different type of text as well
as label,So for better performance what i did is on
scrollViewDidEndDecelerating i am trying to render the images on visible
cells only. When I used reloadRowsAtIndexPaths to reload specific cell
it's crashing. Showing error message as unrecognized selector sent to
instance 0x1edc6a40. Any idea were i am going wrong..
Here is My code:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
Feed *feedObject = [self.feedList objectAtIndex:indexPath.row];
BOOL isTableDecelarating = NO;
if([tableView isDecelerating]){
isTableDecelarating = YES;
}
switch ([feedObject.votingStyle intValue]) {
case 4:{
StarCell *cell =(StarCell *)[tableView
dequeueReusableCellWithIdentifier:@"starCell"];
if(!cell){
NSLog(@"StarCell");
NSArray *nib = [[NSBundle mainBundle]
loadNibNamed:@"StarCell" owner:self options:nil];
cell = (StarCell *)[nib objectAtIndex:0];
[cell setBackgroundColor:[UIColor clearColor]];
[cell.questionLabel setFont:[UIFont
fontWithName:PROXIMA_NOVA_SEMI_BOLD size:17]];
cell.avatarButton.layer.borderWidth = 2.0f;
}
cell.feedBgImage.image = nil;
if([feedObject.feedType intValue] == 3){
if(!isTableDecelarating)
cell.feedBgImage.image = [UIImage
imageNamed:[@"bg_feed"
concatInt:[feedObject.feedBgType intValue]+1]];
}
else if([feedObject.feedType intValue] ==2){
cell.videoButton.hidden = NO;
UIImage *image = [[WSImageDownloader sharedInstance]
cachedImageForRequest:feedObject.thumbImageURL];
if(image){
[cell.loadIndicator stopAnimating];
if(!isTableDecelarating)
cell.feedBgImage.image =image;
}
else{
[self downloadImageFor:feedObject.thumbImageURL
atIndex:indexPath.row];
}
}
else{
UIImage *image = [[WSImageDownloader sharedInstance]
cachedImageForRequest:feedObject.resourceId];
if(image){
[cell.loadIndicator stopAnimating];
if(!isTableDecelarating)
cell.feedBgImage.image =image;
}
else{
[self downloadImageFor:feedObject.resourceId
atIndex:indexPath.row];
}
}
return cell;
break;
}
case 2:{
YesNoCell *cell =(YesNoCell *)[tableView
dequeueReusableCellWithIdentifier:@"yesNoCell"];
if(!cell){
NSLog(@"YesNoCell");
NSArray *nib = [[NSBundle mainBundle]
loadNibNamed:@"YesNoCell" owner:self options:nil];
cell = (YesNoCell *)[nib objectAtIndex:0];
[cell setBackgroundColor:[UIColor clearColor]];
[cell.questionLabel setFont:[UIFont
fontWithName:PROXIMA_NOVA_SEMI_BOLD size:17]];
cell.avatarImage.layer.borderWidth = 2.0f;
}
cell.feedBgImage.image = nil;
if([feedObject.feedType intValue] == 3){
[cell.loadIndicator stopAnimating];
if(!isTableDecelarating)
cell.feedBgImage.image = [UIImage
imageNamed:[@"bg_feed"
concatInt:[feedObject.feedBgType intValue]+1]];
}
else if([feedObject.feedType intValue] ==2){
cell.videoButton.hidden = NO;
UIImage *image = [[WSImageDownloader sharedInstance]
cachedImageForRequest:feedObject.thumbImageURL];
if(image){
[cell.loadIndicator stopAnimating];
if(!isTableDecelarating)
cell.feedBgImage.image =image;
}
else{
[self downloadImageFor:feedObject.thumbImageURL
atIndex:indexPath.row];
}
}
else{
UIImage *image = [[WSImageDownloader sharedInstance]
cachedImageForRequest:feedObject.resourceId];
if(image){
[cell.loadIndicator stopAnimating];
if(!isTableDecelarating)
cell.feedBgImage.image =image;
}
else{
[self downloadImageFor:feedObject.resourceId
atIndex:indexPath.row];
}
}
return cell;
break;
}
case 3:{
YNMayBeCell *cell =(YNMayBeCell *)[tableView
dequeueReusableCellWithIdentifier:@"ynmCell"];
if(!cell){
NSLog(@"YNMayBeCell");
NSArray *nib = [[NSBundle mainBundle]
loadNibNamed:@"YNMayBeCell" owner:self options:nil];
cell = (YNMayBeCell *)[nib objectAtIndex:0];
[cell setBackgroundColor:[UIColor clearColor]];
[cell.questionLabel setFont:[UIFont
fontWithName:PROXIMA_NOVA_SEMI_BOLD size:17]];
cell.avatarButton.layer.borderWidth = 2.0f;
}
cell.feedBgImage.image = nil;
if([feedObject.feedType intValue] == 3){
if(!isTableDecelarating)
cell.feedBgImage.image = [UIImage
imageNamed:[@"bg_feed"
concatInt:[feedObject.feedBgType intValue]+1]];
}
else if([feedObject.feedType intValue] ==2){
cell.videoButton.hidden = NO;
UIImage *image = [[WSImageDownloader sharedInstance]
cachedImageForRequest:feedObject.thumbImageURL];
if(image){
[cell.loadIndicator stopAnimating];
if(!isTableDecelarating)
cell.feedBgImage.image =image;
}
else{
[self downloadImageFor:feedObject.thumbImageURL
atIndex:indexPath.row];
}
}
else{
UIImage *image = [[WSImageDownloader sharedInstance]
cachedImageForRequest:feedObject.resourceId];
if(image){
[cell.loadIndicator stopAnimating];
if(!isTableDecelarating)
cell.feedBgImage.image =image;
}
else{
[self downloadImageFor:feedObject.resourceId
atIndex:indexPath.row];
}
}
return cell;
break;
}
default:{
ThumbsUpCell *cell =(ThumbsUpCell *)[tableView
dequeueReusableCellWithIdentifier:@"thumbsUpCell"];
if(!cell){
NSLog(@"ThumbsUpCell");
NSArray *nib = [[NSBundle mainBundle]
loadNibNamed:@"ThumbsUpCell" owner:self options:nil];
cell = (ThumbsUpCell *)[nib objectAtIndex:0];
[cell setBackgroundColor:[UIColor clearColor]];
[cell.questionLabel setFont:[UIFont
fontWithName:PROXIMA_NOVA_SEMI_BOLD size:17]];
cell.avatarButton.layer.borderWidth = 2.0f;
}
cell.feedBgImage.image = nil;
[cell.loadIndicator startAnimating];
[cell.loadIndicator setHidesWhenStopped:YES];
if([feedObject.feedType intValue] == 3){
[cell.loadIndicator stopAnimating];
if(!isTableDecelarating)
cell.feedBgImage.image = [UIImage
imageNamed:[@"bg_feed"
concatInt:[feedObject.feedBgType intValue]+1]];
}
else if([feedObject.feedType intValue] ==2){
cell.videoButton.hidden = NO;
UIImage *image = [[WSImageDownloader sharedInstance]
cachedImageForRequest:feedObject.thumbImageURL];
if(image){
[cell.loadIndicator stopAnimating];
if(!isTableDecelarating)
cell.feedBgImage.image =image;
}
else{
[self downloadImageFor:feedObject.thumbImageURL
atIndex:indexPath.row];
}
}
else{
UIImage *image = [[WSImageDownloader sharedInstance]
cachedImageForRequest:feedObject.resourceId];
if(image){
[cell.loadIndicator stopAnimating];
if(!isTableDecelarating)
cell.feedBgImage.image =image;
}
else{
[self downloadImageFor:feedObject.resourceId
atIndex:indexPath.row];
}
}
return cell;
break;
}
}
}
Scrollview:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)aScrollView
{
NSArray *visibleRows = [self.homeTableView visibleCells];
[self.homeTableView beginUpdates];
[self.homeTableView reloadRowsAtIndexPaths:visibleRows
withRowAnimation:UITableViewRowAnimationNone];
[self.homeTableView endUpdates];
}
No comments:
Post a Comment