2016-09-20 53 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

相关问题