Recently, I had faced this issue in which I am not able to update the UI in cell of uitableview. 

Cases:

1) we change a value of an array which has already displayed status on cell of tableview let say we change the price of item already displayed, now need to update that particular cell. I tried using dispatch on main queue and did tableview reloadData . It didn't help, I was surprised. The moment I scroll it or tap the value changes.

2) I am downloading an image from URL and displaying it on cell, after its downloaded it doesn't displays it on cell but once I tap the cell, the image appears. I want to update the UI the moment its downloaded. This was sample code inside cell:

```
-(void)createPageScrollWith:(NSArray*)items{

scrollView.contentSize = CGSizeMake(scrollView.frame.size.width*[items count], scrollView.frame.size.height);

for (int i=0; i<[items count]; i++) {

    NSDictionary *thisItem = [items objectAtIndex:i];
    UIImageView* imView = [[UIImageView alloc] initWithFrame:CGRectMake(i * scrollView.frame.size.width, 0, scrollView.frame.size.width, scrollView.frame.size.height)];

    NSString* imageURL = ([thisItem objectForKey:@"image"]) ? [thisItem objectForKey:@"image"] : [thisItem objectForKey:@"image_url"];

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
        NSData* imageData = [ImageManager cacheAnyImageWithUrl:imageURL];

        dispatch_async(dispatch_get_main_queue(), ^{
            imView.image = [UIImage imageWithData:imageData];
            [self setNeedsLayout];
        });
    });
    [scrollView addSubview:imView];
}

pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, scrollView.frame.size.height-30, scrollView.frame.size.width, 20)];
pageControl.center = CGPointMake(self.contentView.center.x, pageControl.frame.origin.y);
pageControl.numberOfPages = [items count];
pageControl.currentPage = 0;
[pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];
[self.contentView addSubview:pageControl];
}

-(void)createPageScrollWith:(NSArray*)items 

```

is called from 

```
-(UITableViewCell *)tableView:(UITableView *)tableView1 cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

```

like this ->

```
ScrollViewCell *cell = [tableView1 dequeueReusableCellWithIdentifier:kTemp3 forIndexPath:indexPath];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        [cell createPageScrollWith:[dict objectForKey:@"items"]];
        return cell;

```

It's very strange as I have already work on this kind of tasks. Morevoer, feeling confused between setneedslayout, focuslayout and setneedsdisplay.

3) I have also seen some kind of flickering effect in scroll in iOS 9. Do you also see the same?