0

我在使用NSfetchedResultsController填充的iOS應用程序中有一個UITableView。當用戶只在沒有滾動或與應用程序交互的情況下查看單元格時,可能會有服務器發送影響單個單元格的外部數據包(例如,更改某種狀態或標題),在這種情況下,我希望單元格自動更新。此刻,顯示修改單元格的唯一方法是滾動UITableView,以便調用cellForRowAtIndexPath來更新單元格。在iOS中重新加載UITableView的單元格

任何想法如何實現?我嘗試了一些方法,但沒有一個似乎可行。

更新1

我也試着撥打configureCell,基本上改變了電池,只要我收到數據包從服務器更新它的標題,並建立了細胞indexPath。通過使用斷點,我發現單元格的標籤被改變了,但它並沒有反映在屏幕上。

更新2: 我注意到,我的tableView引用在表格中加載單元格後變爲null。我不知道爲什麼發生這種情況,但它使reloadData無用。

+0

[self.tableView reloadRowsAtIndexPaths:@ [indexPathOfYourCell] withRowAnimation:UITableViewRowAnimationNone]; – Pradeep

+0

我已經試過了,這是很常見的建議。 – user1845360

+0

你使用NSFetchedResultsController委託方法嗎?如果不是,爲什麼不呢?聽起來就像你試圖自己管理已更改的屬性。 –

回答

0

問題解決了,我以編程方式創建了對UIViewController的子類的新引用,並且我失去了對錶視圖的引用。

-1

你知道什麼時候你會收到來自服務器的響應,那時你只是重新加載表格單元格或tableview。

Check this link

+0

在調用reloadRowsAtIndexPaths時不刷新UITableView,也許鏈接中的人沒有使用抓取的控制器......不知道。 – user1845360

0

可能是下面的代碼是你

/** 
    HTTP CONSTANTS 
**/ 
#define TIMEOUT_INTERVAL 60 
#define CONTENT_TYPE @"Content-Type" 
#define URL_ENCODED @"application/x-www-form-urlencoded" 
#define GET @"GET" 
#define POST @"POST" 

-(NSMutableURLRequest*)getNSMutableURLRequestUsingPOSTMethodWithUrl:(NSString *)url postData:(NSString*)_postData 
{ 
    NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:TIMEOUT_INTERVAL]; 
    [req setHTTPMethod:POST]; 
    [req addValue:URL_ENCODED forHTTPHeaderField:CONTENT_TYPE]; 
    [req setHTTPBody: [_postData dataUsingEncoding:NSUTF8StringEncoding]]; 
    return req; 
} 



    NSString *_postData = {<Your postData>} 
    NSMutableURLRequest *req = [self getNSMutableURLRequestUsingPOSTMethodWithUrl:LOGIN_URL postData:_postData]; 
    [NSURLConnection sendAsynchronousRequest:req queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) 
    { 
     if (error)// it means server error 
     { 
      //error while connecting server 
     } 
     else 
     { 
      NSError *errorInJsonParsing; 
      NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&errorInJsonParsing]; 
      if(errorInJsonParsing) //error parsing in json 
      { 
       //error in json parsing 
      } 
      else 
      { 
       @try 
       { 
        NSLog(@"json==%@",json); 
        [self.tableView reloadRowsAtIndexPaths:@[indexPathOfYourCell] withRowAnimation:UITableViewRowAnimationNone]; 
       } 
       @catch (NSException *exception) 
       { 
        //exception 
       } 

      } 
     } 
    }]; 
0

使用

[UITableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:yourRowNumber inSection:yourSectionNumber]] withRowAnimation:UITableViewRowAnimationFade];

相應的文檔可以在這裏找到樂於助人 - http://developer.apple.com/library/ios/documentation/uikit/reference/UITableView_Class/Reference/Reference.html#//apple_ref/occ/instm/UITableView/reloadRowsAtIndexPaths:withRowAnimation

+0

謝謝你。但是,如果你看到Update 2出於某種原因,當我加載所有數據時,我將失去對tableview的引用,並且當我單擊一個UIBarButtonItem時,我似乎將其還原了。我將查看鏈接以防萬一在故事板中設置不正確的東西, – user1845360

相關問題