我有一个关于ABPersonViewController的问题。我使用ABPeoplePickerNavigationControllerDelegate显示人员选择器(联系人列表)。当我选择一个人时,我想显示一个ABPersonViewController。问题是,在选择人员之后,ABPersonViewController消失了。在detail -> I -> a person中,ABPersonViewController出现(具有正确的属性),-> ABPersonViewController立即消失,完整的peoplepicker也会出现。我认为问题在于我把PeoplePicker推开了。
我读了很多教程,但我不明白。我目前正在为iOS8开发。
大多数教程在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;
}提前谢谢你。
问候
发布于 2016-04-20 23:05:14
在iOS8中,初始化ABPeoplePickerNavigationController时需要添加如下代码,否则peoplePickerNavigationController会在您选择联系人后立即关闭。
if(IOS8_OR_LATER){
peoplePicker.predicateForSelectionOfPerson = [NSPredicate predicateWithValue:false];
}此外,对于iOS 8,请使用
- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier 或
- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePicker didSelectPerson:(ABRecordRef)person而不是
shouldContinueAfterSelectingPerson
因为此方法在iOS8中已弃用
https://stackoverflow.com/questions/26195824
复制相似问题