ボタンがタッチされたときに People Picker を表示したい新しいプロジェクトがあります。
だから私は識別子UIButton
を持つジェネリックにセグエを持っています。この ViewController のクラスを に設定します。UIViewController
showContacts
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
People ピッカーが表示されない理由はよくわかりません。