2014-10-04 4 views
0

ABPersonViewController에 대한 질문이 있습니다. 필자는 ABPeoplePickerNavigationControllerDelegate를 사용하여 사람 선택 도구 (연락처 목록)를 표시합니다. 나는 사람을 선택할 때 ABPersonViewController를 보여주고 싶다. 문제는 사람을 선택한 후에 ABPersonViewController가 사라진다는 것입니다. 자세히 -> 사람을 선택하십시오 -> ABPersonViewController가 나타나고 (올바른 속성으로) -> ABPersonViewController가 즉시 dispaint되고 완전한 peoplepicker도 나타납니다. 문제는 내가 PeoplePicker를 밀어 버리는 것입니다.사람을 선택한 후 ABPersonViewController가 사라집니다.

튜토리얼에서 많이 읽었지만 이해하지 못합니다. 나는 현재 IOS 8을 위해 개발 중이다.

자습서의 대부분은 peoplepicker의 다른 방법으로 ABPersonViewController를 호출하지만 다른 위임 메서드에서 호출하면 작동하지 않는다.

@interface ViewController : UIViewController<ABPeoplePickerNavigationControllerDelegate, ABPersonViewControllerDelegate> 

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

    ABPersonViewController *picker = [[ABPersonViewController alloc] init]; 
    picker.personViewDelegate = self; 
    picker.displayedPerson = person; 
    picker.displayedProperties = peoplePicker.displayedProperties; 
    picker.allowsActions = YES; 
    [peoplePicker pushViewController:picker animated:YES]; 
    return NO; 
} 

가 사전에 감사합니다

여기 내 코드입니다.

인사말

+1

왜 'ABPersonViewController'를 (를) 보여 주시겠습니까? 'ABPeoplePickerNavigationController'는'ABPeoplePickerNavigationControllerDelegate'가 제대로 구현되면 자동으로 연락처 정보를 보여줍니다. – rmaddy

+0

그러면 내 질문은 어떻게 PersonViewController의 속성을 설정할 수 있으며 PersonViewController의 선택된 속성을 어떻게 얻을 수 있습니까? –

+1

'ABPeoplePickerNavigationController'의'displayedProperties' 속성을 살펴보십시오. 그리고 특정 컨택에 대해 속성이 선택되면 알릴 수있는 적절한 대리자 메서드를 구현합니다. – rmaddy

답변

0

는 iOS8의에서, 당신은 당신이 연락처를 선택한 후, 그렇지 않으면 peoplePickerNavigationController 바로 기각합니다, 당신은 ABPeoplePickerNavigationController을 초기화 할 때 다음과 같은 코드를 추가해야합니다.

if(IOS8_OR_LATER){ 
    peoplePicker.predicateForSelectionOfPerson = [NSPredicate predicateWithValue:false]; 
} 

또한, 아이폰 OS 8,

- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier 

또는

- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePicker didSelectPerson:(ABRecordRef)person 

대신

shouldContinueAfterSelectingPerson를 사용

iOS8에서이 메소드가 사용되지 않기 때문에