在加载UITableVIew之前从解析中检索图像?

时间:2014-10-28 14:05:57

标签: ios objective-c uitableview uiimageview parse-platform

一切正常,但细胞中的图像在令人不安的延迟后出现。 tableView完成加载后大约0.3秒。我认为在短时间内显示空白图像真是太丑了......

如何在加载解析图像之后立即显示tableView(为什么不首先从缓存中?)。或者我可以让发射屏幕保持更长时间..? TableView是应用程序中的初始视图。

queryForTable

- (PFQuery *)queryForTable {
    PFQuery *query = [PFQuery queryWithClassName:self.parseClassName];

    // If no objects are loaded in memory, we look to the cache
    // first to fill the table and then subsequently do a query
    // against the network.
    if ([self.objects count] == 0) {
        query.cachePolicy = kPFCachePolicyCacheThenNetwork;

    }

    [query orderByAscending:@"name"];

    return query;
}

的cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath object:(PFObject *)objects
{
    static NSString *simpleTableIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    }

    //loading icons
    PFFile *thumbnail = [objects objectForKey:self.imageKey];
    PFImageView *thumbnailImageView = (PFImageView*)[cell viewWithTag:100];
    thumbnailImageView.file = thumbnail;
    thumbnailImageView.image = [UIImage imageNamed:@"placeholder.jpg"];


    [thumbnailImageView loadInBackground:^(UIImage *image, NSError *error) {
        if (!error) {

        }
    }];



    //cell
    cell.textLabel.text = [objects objectForKey:self.textKey];

    return cell;
}

提前致谢:)

2 个答案:

答案 0 :(得分:1)

短暂延迟后加载图像没有任何害处。这是一个标准程序,后面是许多世界级的应用程序(曾尝试在Facebook或Twitter应用程序中滚动)。在逻辑和程序方面,解决这个问题的工作会非常混乱。

答案 1 :(得分:1)

我认为最好的方法就是facebook在他们的app上做的方式。 Facebook显示图像所属的空灰色容器,一旦图像被下载,它们就会以动画方式淡入其中。我认为这是要走的路是因为它似乎没有意义加载图像然后可能在准备好时加载另一个图像,更好地只是拿着一个空容器并加载图像一次就绪