2014-09-25 13 views
5

In ios8, desidero accedere alle proprietà dei contatti se ha più di un numerophone ma non so come farlo in iOS8.Visualizzare le proprietà dei contatti se ha più di un numero di telefono con ios8

Ecco il mio codice in 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; 
    } 

} 

So che devo usare il metodo didSelectPerson da iOS 8, ma non so come dire l'applicazione che si può continuare dopo aver selezionato una persona come in iOS 7.

Ho letto su predicateForSelectionOfPerson sulla documentazione Apple ma non capisco come usarlo.

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

vi ringrazio in anticipo per il vostro aiuto.

risposta

10

Aggiungi questo, dove si crea un'istanza Selezione utenti:

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

Questo vi permetterà di scegliere solo i contatti con 2 o più numeri di telefono. Per altri contatti, ti verranno mostrati i dettagli del contatto.

+1

Grazie! Questo è quello di cui avevo bisogno! Era il contrario ("% K. @ count <2") ma ora capisco come usare i predicati con il selettore di persone. – Leep

+0

Potrebbe anche essere necessario: if ([picker respondsToSelector: @selector (setPredicateForEnablingPerson :)]) { picker.predicateForEnablingPerson = [NSPredicate predicateWithFormat: @ "EmailAddresses @ count> 0"]; In caso contrario, la mia app non selezionerebbe affatto un contatto –

+0

@Leep Quando aggiungo '("% K. @ count <2 ")', tutti i contatti con meno di 2 numeri di telefono sono disattivati. – user1324887

Problemi correlati