I have a UITableViewController with a UIScrollView inside a UIView as its title. UIScrollView used to display image slide shows:
UITableView -UITableViewHeaderView -UIView -UIScrollView -UIImageView ... -UIPageControl
Each image has a subitem with its name and description:
UIImageView -UIView -UILabel -UILabel
When I need to update my tableView , the delegate method is called, which reloads the data in the tableView and calls the addImages method:
- (void)eventsUpdated { if ([self respondsToSelector:@selector(setRefreshControl:)]) [self.refreshControl endRefreshing]; [self.tableView reloadData]; [self addImages]; }
This is how I add my images:
- (void)addImages [self.scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; for (int i = 0; i < images.count; i++) { CGRect frame; frame.origin.x = self.scrollView.frame.size.width * i; frame.origin.y = 0; frame.size = self.scrollView.frame.size; UIImageView *subview = [self createImageViewForEvent:[images objectAtIndex:i] inFrame:frame]; subview.frame = frame; [self.scrollView addSubview:subview]; } self.scrollView.contentSize = CGSizeMake(scrollView.frame.size.width*images.count, scrollView.frame.size.height); pageControll.currentPage = 0; pageControll.numberOfPages = images.count; } - (UIImageView *)createImageViewForEvent:(Event *)event inFrame:(CGRect)frame { UIImage *image; NSString *imageName = [event.imageName lastPathComponent]; NSString *bundleFilePath = [[NSBundle mainBundle] pathForResource:[imageName stringByDeletingPathExtension] ofType:[imageName pathExtension]]; image = [UIImage imageWithContentsOfFile:bundleFilePath]; UIImageView *output = [[UIImageView alloc] initWithImage:image]; output.frame = frame; UIView *descriptionView = [[UIView alloc] initWithFrame:CGRectMake(0, frame.size.height*0.7, frame.size.width, frame.size.height*0.3)]; descriptionView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]; descriptionView.alpha = 1.0; UILabel *header = [[UILabel alloc] initWithFrame:CGRectMake(10, 5, frame.size.width-20, 12)]; header.textColor = [UIColor colorWithRed:210/256.0 green:217/256.0 blue:231/256.0 alpha:1.0]; header.font = [UIFont fontWithName:@"Helvetica" size:17]; header.backgroundColor = [UIColor clearColor]; header.lineBreakMode = UILineBreakModeTailTruncation; header.numberOfLines = 1; UILabel *description = [[UILabel alloc] initWithFrame:CGRectMake(10, 22, frame.size.width-20, 28)]; description.textColor = [UIColor colorWithRed:255/256.0 green:255/256.0 blue:255/256.0 alpha:1.0]; description.font = [UIFont fontWithName:@"Helvetica" size:12]; description.backgroundColor = [UIColor clearColor]; description.lineBreakMode = UILineBreakModeTailTruncation; description.numberOfLines = 2; header.text = event.title; [descriptionView addSubview:header]; description.text = event.shortDesription; [descriptionView addSubview:description]; [output addSubview:descriptionView]; return output; }
After the first start everything works fine, but if I try to reload my tableView and call addImages again, all UILabels will disappear, only UIImageView and UIView will be visible.
UPD:
I noticed that my UILabels appear after some time after about 30 seconds. I have never experienced something like this before
UPD 2:
After reloading the contents of tableView and scrollview , scrollView's not updated immediately, only after I start scrolling