【问题标题】:How to force a tableview to display contents fetched from web service immediately?如何强制 tableview 立即显示从 Web 服务获取的内容?
【发布时间】:2017-01-28 23:13:56
【问题描述】:

嗨,我的 iPhone 应用程序用户使用 Web 服务更新 tableview,首先将项目保存在核心数据中。

然而,目前,在我认为数据存在于 Core Data 中与表格视图在屏幕上刷新之间存在很长的延迟。

如果应用空白安装,在微调器停止后十到十五秒后,数据出现在屏幕上之前,应用屏幕可能会保持空白,但是,如果您点击一行,您可以查看建议该项目的详细信息数据存在于核心数据中。类似地,如果您上下滚动,屏幕就会开始填充。我的问题是,如何让数据在保存到核心数据后立即显示在屏幕上?

我已尝试将[self.tableView reloadData] 到处放置,但它似乎对显示数据的时间表没有影响。它唯一有效的时候是我在调用 Web 服务之后将它放在 viewDidLoad 中。在这种情况下,每行都会出现占位符图像,但文本不会在相同的 10 到 15 秒内出现。

这里是调用 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 中,但没有成功。

【问题讨论】:

  • fetchServiceData 发生了什么?

标签: ios objective-c core-data tableview


【解决方案1】:

这只是一个建议

viewWillAppear 很可能在您收到数据之前很久就被调用了。所以添加reloadData 也无济于事。

所有 UIView 都有一个名为 setNeedsDisplay() 的方法,它告诉系统该视图需要重绘。我不知道 reloadData 是否会自动执行此操作,或者您是否需要手动执行此操作。尝试在[self.tableView reloadData] 之后添加[self.tableView setNeedsDisplay]

【讨论】:

  • 有趣的建议。没有改变事情。奇怪的是图像会立即加载,而不是标签。也许它与 tableview 委托方法有关
  • 验证您的 iboutlets 是否已连接,或者您的 init 方法设置是否正确。还要仔细检查 cellForRow
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-30
相关资源
最近更新 更多