重新加载数据永远不会在tableview中停止

时间:2014-07-24 00:20:24

标签: objective-c uitableview parse-platform reload

我想在Parse.com中完成查询时重新加载tableview中的数据但是一旦它开始重新加载,它就永远不会停止。 这是代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    WishlistCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" ];
    wishlist *temp=(wishlist*)[_dataSource objectAtIndex:[indexPath indexAtPosition:1]];
    PFQuery * retrieveExpos = [PFQuery queryWithClassName:@"_User"];
    [retrieveExpos whereKey:@"username" equalTo:temp.exponom];
    [retrieveExpos findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
        NSLog(@"%@",objects);
        if (!error) {
            exposArray =[[NSArray alloc] initWithArray:objects];
        }
    }];

    PFQuery * retrieveImage = [PFQuery queryWithClassName:@"CarDescription"];
    [retrieveImage whereKey:@"objectId" equalTo:temp.idvoiture];
    [retrieveImage findObjectsInBackgroundWithBlock:^(NSArray *objects1, NSError *error) {
        NSLog(@"%@",objects1);
        if (!error) {

            exposArray1 =[[NSArray alloc] initWithArray:objects1];

        }
        [tableview reloadData];

    }];

    PFObject * tempObject = [exposArray objectAtIndex:indexPath.row];
    cell.EXPONAME.text=[tempObject objectForKey:@"Exponame"];
    cell.PHONENUMBER.text=[tempObject objectForKey:@"Number"];
    PFObject * tempObject1 = [exposArray1 objectAtIndex:indexPath.row];
    PFFile * imageFile= [tempObject1 objectForKey:@"FrontImage"];
    cell.loadingSpinner.hidden=NO;

    [cell.loadingSpinner startAnimating];
    [imageFile getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
        if (!error) {
            //                       NSLog(@"%@",data);
            cell.CarImage.image=[UIImage imageWithData:data];
            [cell.loadingSpinner stopAnimating];
            cell.loadingSpinner.hidden=YES;
        }
    }];
    return  cell;
}

1 个答案:

答案 0 :(得分:1)

我认为你遇到了一个永无止境的递归

reloadData使tableView重新构建它。最后一步是为所有可见行创建单元格。在tableView: cellForRowAtIndexPath:中,您再次触发reloadData(虽然它在一个区块中延迟) - 产生一个圆圈。

另一个问题可能是您在后台线程中调用[tableView reloadData]。 UI通常必须在主线程上发生。