0

ピープル ピッカーの紹介

ABPeoplePickerNavigationController *peoplePicker = [[ABPeoplePickerNavigationController alloc] init];
peoplePicker.allowsActions = YES;
peoplePicker.allowsEditing = NO;
peoplePicker.peoplePickerDelegate = self;
[self presentViewController:peoplePicker animated:YES completion:nil];

iOS 7 での ABPeoplePickerNavigationControllerDelegate の実装

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {
  ABPersonViewController *personViewController = [[ABPersonViewController alloc] init];
  personViewController.displayedPerson = person;
  [peoplePicker pushViewController:personViewController animated:YES];
  return NO;
}

ここまでは順調ですね。Person View Controller は期待どおりに表示されます。iOS7 メソッドは値を返します。ピープル ピッカーが開いたままであることを確認するために、NOを返すことができます。iOS8 では、上記のデリゲート メソッドは廃止され、新しいメソッドを実装する必要があります。

- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person {
  ABPersonViewController *personViewController = [[ABPersonViewController alloc] init];
  personViewController.displayedPerson = person;
  [peoplePicker pushViewController:personViewController animated:YES];
}

Person View Controller は People Picker にプッシュされますが、ほんの一瞬で People Picker が閉じられます (Person View Controller と一緒に)。

iOS8 で People Picker が消えないようにする方法はありますか? 他の提案はありますか?

4

3 に答える 3

0

presentViewController代わりに使用するのはどうですかpushViewController... Xcode 6では、pushViewControllerは非推奨であり、iOS8で実装しようとしていることがわかりますので、試してみてください...次の行のようなもの:

[peoplePicker presentViewController: personViewController animated: YES completion: nil];
于 2014-10-31T14:32:35.220 に答える