在UITableViewCell中设置iOS通讯簿图像

时间:2012-01-03 23:10:17

标签: ios uitableview addressbookui

我正在尝试将AddressBookUI API集成到我的iOS 5应用程序中,以在表格视图中显示所选内容。我已经能够实现AddressBook Picker并将其设置为当用户从其地址簿中选择一个人时,它会填充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;
}

谢谢!

2 个答案:

答案 0 :(得分:3)

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

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

        [peopleImage insertObject:image atIndex:0];

然后可以通过调用UITabelView

中的数组将图像像普通图像一样加载到单元格中
cell.personImage.image = [peopleImage objectAtIndex:indexPath.row];

答案 1 :(得分:0)

首先,你从ABRecordRef获得一个UIImage:

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

然后,您可以将UITableViewCell的imageView图像设置为:

[[cell imageView] setImage: image];

可以帮助您结合其他链接:

http://www.chrisdanielson.com/tag/uitableviewcell/

http://goddess-gate.com/dc2/index.php/post/421