У меня есть новый проект, в котором я хочу отображать средство выбора людей при нажатии кнопки.
Итак, у меня есть UIButton
, который переходит к универсальному UIViewController
с идентификатором showContacts
. Я установил класс этого ViewController на ABPeoplePickerNavigationController
.
Теперь в моем корневом ViewController у меня есть этот код для инициализации средства выбора:
#pragma mark - Segues
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"showContacts"]){
ABPeoplePickerNavigationController *ppnc = segue.destinationViewController;
ppnc.peoplePickerDelegate = self;
ppnc.addressBook = ABAddressBookCreate();
ppnc.displayedProperties = [NSArray arrayWithObject:[NSNumber numberWithInt:kABPersonPhoneProperty]];
}
}
Хотя я добавил тестовые контакты в свою адресную книгу симулятора, результаты выглядят следующим образом:
нет средства выбора http: //i.minus. com / jbwUQyLr36ChHo.png
С помощью следующего кода, который очень похож на то, что я делаю в методе prepareForSegue:
, мне удается показать средство выбора через IBAction
:
- (IBAction)showPicker:(id)sender {
ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
picker.peoplePickerDelegate = self;
NSArray *displayedItems = [NSArray arrayWithObjects:[NSNumber numberWithInt:kABPersonPhoneProperty],
[NSNumber numberWithInt:kABPersonEmailProperty],
[NSNumber numberWithInt:kABPersonBirthdayProperty], nil];
picker.displayedProperties = displayedItems;
// Show the picker
[self presentModalViewController:picker animated:YES];
}
Результат:
средство выбора http://i.minus.com/jeEVeIBmfIYdR.png
Мне не ясно, почему средство выбора людей не отображается.