2016-02-24 63 views
0

最近,我遇到了這個問題,我無法更新uitableview單元格中的UI。用戶界面需要在獲取數據或刷新本地數據後刷新

案例:

1)我們改變它已經顯示的tableview放過細胞狀態的陣列的價值說我們改變項目的價格已經顯示,現在需要更新特定的細胞。我嘗試在主隊列上使用dispatch,並做了tableview reloadData。它沒有幫助,我很驚訝。當我滾動它或點擊數值變化。

2)我從URL下載圖像並將其顯示在單元格上,下載後它不會將它顯示在單元格上,但是一旦我點擊單元格,圖像就會出現。我想在下載的時候更新UI。這是內部的細胞樣本代碼:

-(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 

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

這樣叫 - >

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

,因爲我已經對這種任務的工作,這是非常奇怪的。更多的是,在setneedslayout,focuslayout和setneedsdisplay之間感到困惑。

3)我也看到在iOS 9中滾動的某種閃爍效果。你也看到了相同的?

回答

0

就忽視其中[實現代碼如下reloadData]你在調度談論的代碼,你猜你缺少它

+0

它的不同類的單元的代碼。不能從這裏調用重新加載數據... – Sumitiscreative

+0

你需要設置一個回調塊或者讓uitableview的實例在調度器中調用reloadloadData,否則我們只是複雜的問題 – mkumar

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

重裝yourtable視圖

0

獲取數據後剛剛重新加載表

[tableview reload];