Отображение ABPeoplePickerNavigationController с помощью segue раскадровки

У меня есть новый проект, в котором я хочу отображать средство выбора людей при нажатии кнопки.

Итак, у меня есть 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

Мне не ясно, почему средство выбора людей не отображается.

7
задан Besi 21 January 2012 в 12:49
поделиться