невозможно отобразить в адресной книге с помощью ABNewPersonViewController - PullRequest
0 голосов
/ 08 декабря 2011

Я совершенно новичок в цели 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);

}

и все та же проблема

1 Ответ

1 голос
/ 08 декабря 2011

Хорошо, ваша проблема в этой строке:

ABNewPersonViewController* newPersonViewController = [[ABNewPersonViewController alloc] initWithNibName:nil bundle:nil];

Если вы замените эту строку на:

ABNewPersonViewController* newPersonViewController = [[ABNewPersonViewController alloc] init];

Ваш код работает нормально.

...