我对 Objective C 很陌生,我正在使用 XCode 4.2,在应用程序的一部分中,我需要将数据保存在地址簿中。但我需要将其显示在地址簿中,而不仅仅是将其保存在单击按钮上
我正在尝试使用以下代码:
我添加了 addressBook
框架和 addressBookUI
框架
在我的 .h 文件中我写了
#import <UIKit/UIKit.h>
#import <AddressBook/AddressBook.h>
#import <AddressBookUI/AddressBookUI.h>
@interface HelloWorld20ViewController : UIViewController<ABNewPersonViewControllerDelegate,ABPersonViewControllerDelegate>{
}
-(IBAction)go;
@end
在我写的 .m 文件中
-(IBAction)go{
ABRecordRef newPerson= ABPersonCreate();
CFErrorRef error = NULL;
ABRecordSetValue(newPerson, kABPersonFirstNameProperty, CFSTR("john"), &error);
ABRecordSetValue(newPerson, kABPersonLastNameProperty, CFSTR("Smith"), &error);
NSAssert(!error, @"something bad happend here.");
ABNewPersonViewController* newPersonViewController = [[ABNewPersonViewController alloc] initWithNibName:nil bundle:nil];
[newPersonViewController setDisplayedPerson:newPerson];
[newPersonViewController setNewPersonViewDelegate:self];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:newPersonViewController];
[self presentModalViewController:navController animated:YES];
CFRelease(newPerson);
}
-(void)newPersonViewController:(ABNewPersonViewController *)newPersonView didCompleteWithNewPerson:(ABRecordRef)person{
[self.navigationController popViewControllerAnimated:YES];
}
当我点击“开始”按钮时,我看到黑屏:这就是我所得到的
这样做有什么原因吗?
非常感谢!
已编辑
当前代码:
-(IBAction)go{
ABRecordRef newPerson= ABPersonCreate();
CFErrorRef error = NULL;
ABRecordSetValue(newPerson, kABPersonFirstNameProperty, CFSTR("john"), &error);
ABRecordSetValue(newPerson, kABPersonLastNameProperty, CFSTR("Smith"), &error);
NSAssert(!error, @"something bad happend here.");
ABNewPersonViewController* newPersonViewController = [[ABNewPersonViewController alloc] initWithNibName:nil bundle:nil];
[newPersonViewController setDisplayedPerson:newPerson];
[newPersonViewController setNewPersonViewDelegate:self];
[self presentModalViewController:newPersonViewController animated:YES];
CFRelease(newPerson);
}
还是同样的问题
最佳答案
好吧,你的问题是这一行:
ABNewPersonViewController* newPersonViewController = [[ABNewPersonViewController alloc] initWithNibName:nil bundle:nil];
如果将该行替换为:
ABNewPersonViewController* newPersonViewController = [[ABNewPersonViewController alloc] init];
您的代码运行良好。
关于objective-c - 无法使用 ABNewPersonViewController 在通讯录中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8422163/