2016-09-20 48 views
0

嗨我的iPhone應用程序用戶更新桌面視圖的Web服務,首先將項目保存在覈心數據。如何強制tableview顯示立即從web服務獲取的內容?

但是,當我相信數據存在於核心數據中以及桌面視圖在屏幕上刷新時,目前存在很長的延遲。

隨着應用程序的空白安裝,應用程序屏幕可以在微調停止後數據出現在屏幕上10到15秒後保持空白,但是,如果您點擊一行,則可以查看項目建議的詳細信息數據存在於核心數據中。類似的,如果你上下滾動,屏幕開始填充。我的問題是,如何在數據保存到核心數據後立即讓數據顯示在屏幕上?

我試過把[self.tableView reloadData]放在所有的地方,但它似乎沒有影響顯示數據的時間表。唯一有一個效果的是,如果我在調用Web服務之後將它放在viewDidLoad中。在這種情況下,每行顯示佔位符圖像,但文本不會在相同的十到十五秒內出現。

這裏是進行Web服務調用的viewDidLoad方法。

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.tableView.dataSource = self; 
    self.tableView.delegate = self; 

      self.spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
     _spinner.center = CGPointMake(160, 200); 
     _spinner.tag = 1;//todos 
     [self.tableView addSubview: _spinner]; 
     [self.tableView bringSubviewToFront:_spinner]; 
     _spinner.hidesWhenStopped = YES; 
     _spinner.hidden = NO; 
     [_spinner startAnimating]; 

     //GO TO BACKGROUND THREAD FOR SERVER CALL 
    dispatch_async(kBgQueue, ^{ 
     NSData* data = [NSData dataWithContentsOfURL: kServiceURL]; 
        [self fetchServiceData:data];//SYNCING NOW TAKING PLACE 

     dispatch_async(dispatch_get_main_queue(), ^{ 
       [self.tableView reloadData]; 
      [[self.view viewWithTag:1] stopAnimating]; 
     }); 
     }); 
    } 

我也放置self.tableView reloadData viewWillAppear沒有成功。

+0

fetchServiceData中會發生什麼? – trapper

回答

0

這僅僅是一個建議

viewWillAppear是最有可能稱爲長收到您的數據之前。所以加入reloadData就沒有幫助。

對於所有名爲setNeedsDisplay()的UIView都有一種方法,告訴系統該視圖需要重繪。我不知道reloadData是自動執行還是需要手動執行。嘗試在[self.tableView reloadData]之後加[self.tableView setNeedsDisplay]

+0

有趣的建議。沒有改變的事情。奇怪的是,圖像立即加載,但不是標籤。也許它與tableview委託方法有關 – user6631314

+0

驗證你的iboutlets已連接,或者你的init方法設置正確。再次檢查cellForRow – Multinerd

相關問題