2012-01-03 2 views
1

Я пытаюсь интегрировать API AddressBookUI в приложение iOS 5 для отображения выбранного содержимого в виде таблицы. Я смог реализовать AddressBook Picker и установить его таким образом, что, когда пользователь выбирает человека из своей адресной книги, он заполняет метку ячейки в TableView. Я также хотел бы, чтобы он мог отображать изображение выбранного человека в одной и той же ячейке, если он существует, и по умолчанию отсутствует изображение изображения, если его нет.Установить адресную книжку iOS в UITableViewCell

Не могу понять, как сохранить как имя, так и данные изображения в той же таблице 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; 
} 

Спасибо!

ответ

3

Нашли простое решение: сохраняйте изображение выбранного контакта в новом NSMutableArray с индексом 0 каждый раз.

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

     [peopleImage insertObject:image atIndex:0]; 

Изображения могут быть загружены как обычно в клетку, вызвав массив в UITabelView

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

Во-первых, вы получаете UIImage от ABRecordRef:

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

Затем вы можете установить изображение ImageView в этой UITableViewCell как:

[[cell imageView] setImage: image]; 

Пара другие ссылки, которые могут помочь вам:

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

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

+0

Я попробовал эти две строки кода, но это не работает для меня. Я отредактировал свое оригинальное сообщение с двумя разделами кода, с которым я работаю. – Brian

Смежные вопросы