2014-09-25 1 views
5

В ios8 я хотел бы получить доступ к свойствам контакта, если у него есть несколько телефонных номеров, но я не знаю, как это сделать в iOS8.Показать свойства контакта, если у него есть более одного номера телефона с ios8

Вот мой код в iOS7:

-(BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person{ 

    //If person has just one phone number 
    ABMultiValueRef phonesRef = ABRecordCopyValue(person, kABPersonPhoneProperty); 
    if(ABMultiValueGetCount(phonesRef) == 1){ 

     CPIContact* contact = [self getCPIContactFromPerson:person andPhoneIndex:0]; 
     [self addContact:contact]; 

     // Dismiss the address book view controller. 
     [_addressBookController dismissViewControllerAnimated:YES completion:nil]; 
     return NO; 

    }else if(ABMultiValueGetCount(phonesRef) == 0){ 

     [[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Common_information",nil) message:NSLocalizedString(@"EditCallSMS_noNumber", nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"Common_ok",nil) otherButtonTitles:nil] show]; 

     return NO; 
    } 
    else{ 
     return YES; 
    } 

} 

Я знаю, что я должен использовать метод didSelectPerson от iOS8, но я не знаю, как сказать приложение, которое может продолжаться после выбора человека, как в IOS 7.

Я читал о предикатаForSelectionOfPerson по документации на яблоки, но я не понимаю, как его использовать.

https://developer.apple.com/library/ios/documentation/AddressBookUI/Reference/ABPeoplePickerNavigationController_Class/index.html#//apple_ref/occ/instp/ABPeoplePickerNavigationController/predicateForSelectionOfProperty

Заранее спасибо за вашу помощь.

ответ

10

Добавьте это где инстанцировании сборщика людей:

if ([peoplePicker respondsToSelector:@selector(setPredicateForSelectionOfPerson:)]) 
{ 
    peoplePicker.predicateForSelectionOfPerson = [NSPredicate predicateWithFormat:@"%[email protected] > 1", ABPersonPhoneNumbersProperty]; 
} 

Это только позволит вам выбрать контакты с 2 или более номеров телефонов. Для других контактов вам будут показаны контактные данные.

+1

Спасибо! Вот что мне нужно! Это было наоборот («% K. @ count <2»), но теперь я понимаю, как использовать предикаты с сборщиками людей. – Leep

+0

Вам также может понадобиться: если ([сборщика respondsToSelector: @selector (setPredicateForEnablingPerson :)]) { picker.predicateForEnablingPerson = [NSPredicate predicateWithFormat: @ "EmailAddresses @ число> 0"]; } Без этого мое приложение не будет выбирать контакт вообще –

+0

@Leep Когда я добавляю '("% K. @ count <2 ")', все контакты с менее чем двумя номерами телефонов выделены серым цветом. – user1324887