Rui*_*pes 1 iphone record new-operator abaddressbook
我正在尝试通过我的应用程序创建Person的新记录.我有名字,电子邮件和电话号码.我怎样才能将它们传递给newPerson的模态视图?我正在关注Apple的文档,但我被困住了.我正在使用ABNewPersonViewController.那是对的吗?如何填写模态视图中的字段?
谢谢,
RL
sha*_*oga 11
如果您已经有详细信息并且只想将它们写入地址簿,那么您不需要 - ABNewPersonViewController.ABNewPersonViewController用于让用户使用iphone地址簿的通用控制器将记录添加到地址簿中.
相反,你应该做以下事情:
a)将地址簿()框架工作添加到您的应用程序.
b)将地址簿标题导入您的视图.
c)创建一个地址簿实例和一个新记录:
ABAddressBookRef iPhoneAddressBook = ABAddressBookCreate();
ABRecordRef newPerson = ABPersonCreate();
Run Code Online (Sandbox Code Playgroud)
d)对于您使用的单值属性:
ABRecordSetValue(newPerson, kABPersonFirstNameProperty, CFSTR("Katie"), nil);
ABRecordSetValue(newPerson, kABPersonLastNameProperty, CFSTR("Bell"), nil);
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
f)保存对地址簿的更改,你写的所有代码都不会生效:
ABAddressBookAddRecord(addressBook, newPerson, nil);
BOOL didAdd = ABAddressBookSave(addressBook, nil);
Run Code Online (Sandbox Code Playgroud)
g)删除记录和地址簿,并检查记录是否添加:
CFRelease(newPerson);
CFRelease(addressBook);
NSLog(@"didAdd = %d",didAdd);
Run Code Online (Sandbox Code Playgroud)
祝大家好运,希望它有所帮助
SHANI
如果要在ABNewPersonViewController中显示某些内容,则必须为要预填充的属性创建并设置ABRecordRef,然后在ABNewPersonViewController上设置displayedPerson属性.所以一个简单的例子可能是:
- (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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5402 次 |
| 最近记录: |