在UITableViewCell中设置iOS通讯簿映像

在UITableViewCell中设置iOS通讯簿映像,ios,uitableview,addressbookui,Ios,Uitableview,Addressbookui,我正在尝试将AddressBookUI API集成到iOS 5应用程序中,以在表视图中显示选定的内容。我已经能够实现地址簿选择器,并将其设置为当用户从他们的地址簿中选择一个人时,它将填充TableView中单元格的标签。我还希望它能够显示在同一个单元格中选定的人的图像(如果存在),如果没有,则显示默认缺少的图片图像 我不知道如何在同一个TableView单元格中同时存储名称和图像数据 任何人对我如何实现这一目标都有任何建议。我已经阅读了开发者文档,知道我应该使用ABPersonCopyImage

我正在尝试将AddressBookUI API集成到iOS 5应用程序中,以在表视图中显示选定的内容。我已经能够实现地址簿选择器,并将其设置为当用户从他们的地址簿中选择一个人时,它将填充TableView中单元格的标签。我还希望它能够显示在同一个单元格中选定的人的图像(如果存在),如果没有,则显示默认缺少的图片图像

我不知道如何在同一个TableView单元格中同时存储名称和图像数据

任何人对我如何实现这一目标都有任何建议。我已经阅读了开发者文档,知道我应该使用ABPersonCopyImageDataWithFormat命令。我似乎无法将它实现到tableview单元格中

以下是我迄今为止的代码片段:

// Store the name into memory when the user selects, then dismiss the view.
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
{

    NSString *selectedPerson = (__bridge NSString *)ABRecordCopyCompositeName(person);


    [people insertObject:selectedPerson atIndex:0];

    if (ABPersonHasImageData(person) == TRUE) {
        NSLog(@"Person has an image!");
    } else {
        NSLog(@"Person does not have an image.");
    }

    [self dismissModalViewControllerAnimated:YES];

    [self.tableView reloadData];

    return NO;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    PartyCell *cell = (PartyCell *)[tableView dequeueReusableCellWithIdentifier:@"Cell"];
    cell.backgroundView = [[GradientView alloc] init];

    cell.personLabel.text = [people objectAtIndex:indexPath.row];
    cell.personImage.image = [UIImage imageNamed:@"missing.png"]; // THIS NEEDS TO DISPLAY THE SELECTED USERS PICTURE. CURRENTLY SHOWS A DEFAULT USER.

    return cell;
}

谢谢

首先,从ABRecordRef获取UIImage:

[UIImage imageWithData:(NSData *)ABPersonCopyImageDataWithFormat(person, kABPersonImageFormatThumbnail)];
然后,可以将UITableViewCell的imageView的图像设置为:

[[cell imageView] setImage: image];
连接其他可能帮助您的链接:


找到了一个简单的解决方案:每次将所选联系人的图像存储在索引为0的新NSMutableArray中

UIImage *image =[UIImage imageWithData:(__bridge NSData *)ABPersonCopyImageDataWithFormat(person, kABPersonImageFormatThumbnail)];

        [peopleImage insertObject:image atIndex:0];
然后,通过在UITableView中调用数组,可以像正常情况一样将图像加载到单元格中

cell.personImage.image = [peopleImage objectAtIndex:indexPath.row];

我试过这两行代码,但对我来说不起作用。我用我正在使用的两段代码编辑了我的原始帖子。