objective-c - 无法使用 ABNewPersonViewController 在通讯录中显示

标签 objective-c ios xcode4.2 addressbook abpersonviewcontroller

我对 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];
}

当我点击“开始”按钮时,我看到黑屏:这就是我所得到的

enter image description here

这样做有什么原因吗?

非常感谢!

已编辑

当前代码:

-(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/

相关文章:

iphone - 如何调试 iPhone 应用程序

ios - 安装后所有这些 Cocoapod 文件都应该是红色的吗?

ios - 在 SWIFT UI 控件中使用 JSON 数据

ios - 无法访问XCTest中以编程方式添加的UIView

ios - 模拟位置,包括 Xcode 4.2/iOS5 中的移动

ios - 应用程序在 iOS 8 设备上运行良好但在 iOS 7 设备上崩溃

ios - 如何以编程方式转换到不同的 View Controller ?

ios - Core Data Objective - C 中的 __NSFrozenArrayM 是什么

ios - Xcode 4.2 不提交文件?

ios外部显示以编程方式