ABPersonViewController завершил редактирование уведомления - PullRequest
1 голос
/ 24 марта 2011

Использование ABPersonViewController для примера кода Apple Quick Contacts.

ABRecordRef person = (ABRecordRef)[people objectAtIndex:0];
    ABPersonViewController *picker = [[[ABPersonViewController alloc] init] autorelease];
    picker.personViewDelegate = self;
    picker.displayedPerson = person;
    picker.allowsEditing = YES;
    [self.navigationController pushViewController:picker animated:YES];

Мне нужен способ уведомления о том, что сборщик завершил редактирование или закрылся, чтобы я мог обновить некоторые кэшированные значения в моем хранилище данных.

Документы Apple рекомендуют держаться подальше от подклассов ABPersonViewController. Любые предложения приветствуются!

1 Ответ

2 голосов
/ 24 марта 2011
    ABPersonViewController *personViewController = [[ABPersonViewController alloc] init];

        personViewController.personViewDelegate = self;
        personViewController.displayedPerson = person; 
        personViewController.allowsEditing=YES;
        personViewController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Back",nil) style:UIBarButtonItemStylePlain target:self action:@selector(ReturnFromPersonView)] ;
        [self.navigationController pushViewController:personViewController animated:YES];
        [personViewController release];

затем напишите свой ReturnFromPersonView метод и метод делегата

- (BOOL)personViewController:(ABPersonViewController *)personViewController shouldPerformDefaultActionForPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifierForValue
{
        // you can write you code here with  [self.navigationController popViewControllerAnimated:YES];
        return YES;     
}

, если вам не нравится метод "кнопки назад" - вы можете написать свой код непосредственно в personViewController shouldPerformDefaultActionForPerson:

...