1

我在 Parse.com 上有一个表格,可以让我存储事件信息。图片、标题、日期和描述。我正在尝试获取图像并将其分配给我开发的自定义单元格中的 UIImageView ......数据加载正常,自定义单元格工作,但图像永远不会更新......我的逻辑代码似乎合法,但话又说回来,我是新人......所以任何帮助表示赞赏。

有问题的代码就在我有评论“//---事件图像”之后

我只是想弄清楚为什么我的图像没有更新。

谢谢!

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath object:(PFObject *)object
 {

static NSString *simpleTableIdentifier = @"eventCell";

VFTEventCell *cell = (VFTEventCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil)
{

    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"EventTableCell" owner:self options:nil];
    cell = [nib objectAtIndex:0];

}

//--- Event Title
cell.title.text = [object objectForKey:@"title"];

//--- Event Date
NSDate *eventDate = [object objectForKey:@"date"];

if(eventDate != NULL)
{

    NSDate *date = [object objectForKey:@"date"];

    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"MM/dd/yyyy"];
    NSString *dateString = [dateFormatter stringFromDate:date];

    cell.date.text = dateString;

}

//--- Event Image
PFFile *eventImage = [object objectForKey:@"image"];

if(eventImage != NULL)
{

    [eventImage getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error) {

        UIImage *thumbnailImage = [UIImage imageWithData:imageData];
        UIImageView *thumbnailImageView = [[UIImageView alloc] initWithImage:thumbnailImage];

        cell.image = thumbnailImageView;

    }];

     }

     return cell;

 }
4

2 回答 2

1

您正在尝试在后台线程中设置它。您只能从主线程访问 UIKit。

[eventImage getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error) {

        UIImage *thumbnailImage = [UIImage imageWithData:imageData];
        dispatch_async(dispatch_get_main_queue(), ^{
            cell.imageView.image = thumbnailImage;
        });

    }];

注意:考虑使用PFImageView.

于 2013-06-09T14:19:00.190 回答
1

我在发布后不久就发现了我的问题......对于任何被卡住的人。我只是删除了 UIIMageView 的创建。考虑到我的 XIB 文件是有道理的,我已经在创建 imageView...但是,我使用 setImage 设置了该对象。

这是代码。

 //--- Event Image
PFFile *eventImage = [object objectForKey:@"image"];

if(eventImage != NULL)
{

    [eventImage getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error)
    {

        UIImage *thumbnailImage = [UIImage imageWithData:imageData];

        [cell.image setImage:thumbnailImage];

    }];

}
于 2013-06-09T14:17:23.603 回答