我正在尝试通过我的应用程序创建人的新记录。我有姓名、电子邮件和电话号码。如何将它们传递给 newPerson 的模态视图?我正在关注 Apple 的文档,但我被卡住了。我正在使用 ABNewPersonViewController。那是对的吗?如何填写模态视图中的字段?
谢谢,
强化学习
我正在尝试通过我的应用程序创建人的新记录。我有姓名、电子邮件和电话号码。如何将它们传递给 newPerson 的模态视图?我正在关注 Apple 的文档,但我被卡住了。我正在使用 ABNewPersonViewController。那是对的吗?如何填写模态视图中的字段?
谢谢,
强化学习
如果您已经有详细信息并且只想将它们写入地址簿,那么您不需要 - ABNewPersonViewController。ABNewPersonViewController 用于让用户使用iphone通讯录的通用控制器向通讯录添加记录。
相反,您应该执行以下操作:
a) 将地址簿 () 框架添加到您的应用程序。
b) 将地址簿标题导入您的视图。
c) 创建地址簿实例和新记录:
ABAddressBookRef iPhoneAddressBook = ABAddressBookCreate();
ABRecordRef newPerson = ABPersonCreate();
d) 对于您使用的单值属性:
ABRecordSetValue(newPerson, kABPersonFirstNameProperty, CFSTR("Katie"), nil);
ABRecordSetValue(newPerson, kABPersonLastNameProperty, CFSTR("Bell"), nil);
e) 对于您使用的电话号码/邮件等多值属性:
ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueAddValueAndLabel(multiPhone, @"054-5429920", kABHomeLabel, NULL);
ABMultiValueAddValueAndLabel(multiPhone,@"02-9809878", kABWorkLabel, NULL);
ABRecordSetValue(newPerson, kABPersonPhoneProperty, multiPhone,nil);
CFRelease(multiPhone);
ABMutableMultiValueRef multiEmail = ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueAddValueAndLabel(multiEmail, @"shannoga@me.com", kABHomeLabel, NULL);
ABRecordSetValue(newPerson, kABPersonEmailProperty, multiEmail, &error);
CFRelease(multiEmail);
f) 保存对地址簿的更改,如果没有这个,您编写的任何代码都不会生效:
ABAddressBookAddRecord(addressBook, newPerson, nil);
BOOL didAdd = ABAddressBookSave(addressBook, nil);
g) 释放记录和通讯录并检查记录是否添加:
CFRelease(newPerson);
CFRelease(addressBook);
NSLog(@"didAdd = %d",didAdd);
祝你好运希望它有所帮助
沙尼
如果要在 ABNewPersonViewController 中显示某些内容,则必须为要预填充的属性创建并设置 ABRecordRef,然后在 ABNewPersonViewController 上设置 displayPerson 属性。所以一个简单的例子可能是:
- (void)createNewPerson
{
// Create the pre-filled properties
ABRecordRef newPerson = ABPersonCreate();
CFErrorRef error = NULL;
ABRecordSetValue(newPerson, kABPersonFirstNameProperty, CFSTR("John"), &error);
ABRecordSetValue(newPerson, kABPersonLastNameProperty, CFSTR("Smith"), &error);
NSAssert( !error, @"Something bad happened here." );
// Create and set-up the new person view controller
ABNewPersonViewController* newPersonViewController = [[ABNewPersonViewController alloc] initWithNibName:nil bundle:nil];
[newPersonViewController setDisplayedPerson:newPerson];
[newPersonViewController setNewPersonViewDelegate:self];
// Wrap in a nav controller and display
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:newPersonViewController];
[self presentModalViewController:navController animated:YES];
// Clean up everything
[navController release];
[newPersonViewController release];
CFRelease(newPerson);
}