私はiOS開発で非常に新しいです。ですから、できるだけ正確かつ基本的な回答をしてください。アドレス帳のピッカーに記入するフィールドを教えてください。
私は2つのフォームを持っています。(現時点ではもっと可能性があります)それぞれの横にボタンがあり、ユーザーがiPadのアドレス帳から連絡先を選択し、アドレス帳からの最後の名前。
The example code I haveは、私が連絡先の名前を記入することができますポイントに私を得ました。しかし、私はReferred Byの隣にある 'Browse Contacts'ボタンをクリックして、同じ関数を使用して参照先の名前を記入するようにしたいと考えています。 getContactName関数にはsenderパラメータがあることがわかります。だから、2つのボタンのうちのどれがクリックされたのかを後で知ることができました。
しかし、私がアドレス帳から選択すると、peoplePickerNavigationControllerまたはfillContactName関数でどのボタンがクリックされたかをどのように知ることができますか?
- (IBAction)getContactName:(id)sender {
ABPeoplePickerNavigationController *picker =
[[ABPeoplePickerNavigationController alloc] init];
picker.peoplePickerDelegate = self;
[self presentModalViewController:picker animated:YES];
}
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker {
[self dismissModalViewControllerAnimated:YES];
}
- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person {
[self fillContactName:person];
[self dismissModalViewControllerAnimated:YES];
return NO;
}
- (BOOL)peoplePickerNavigationController:
(ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person
property:(ABPropertyID)property
identifier:(ABMultiValueIdentifier)identifier
{
return NO;
}
- (void)fillContactName:(ABRecordRef)person
{
NSString* firstName = (__bridge_transfer NSString*)ABRecordCopyValue(person,
kABPersonFirstNameProperty);
NSString *test = [firstName stringByAppendingString:@" "];
NSString* lastName = (__bridge_transfer NSString*)ABRecordCopyValue(person,
kABPersonLastNameProperty);
NSString *fullName = [test stringByAppendingString:lastName];
self.contactName.text = fullName;
}
補足として、姓と名を手動で組み合わせるのではなく、 "ABRecordCopyCompositeName()"関数を使用したくないのですか? –