【发布时间】:2012-02-23 17:01:37
【问题描述】:
我对 iOS 开发非常陌生。因此,请尽可能准确和基本地回答您的问题。
我有一个包含两个(目前 - 可能还有更多)字段的表单,每个字段旁边都有一个按钮,允许用户从 iPad 通讯录中选择一个联系人,并在相关字段中填写第一个和地址簿中的姓氏。
The example code I have 让我可以填写联系人姓名。但是,我希望能够单击被推荐人旁边的“浏览联系人”按钮,并让它使用相同的功能来填写被推荐人的姓名。我看到 getContactName 函数有 sender 参数。所以,我可以很容易地分辨出这两个按钮中的哪一个(或以后的其他按钮)被点击了。
但是,当我从通讯录中选择时,我如何知道在 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()”函数而不是手动将名字和姓氏放在一起吗?