iOS7 - ABPersonViewController, режим редактирования

В Apple представлен хороший и исчерпывающий небольшой пример - "QuickContacts" ( http://developer.apple.com/library/IOs/samplecode/QuickContacts/Introduction/Intro.html), в котором описывается базовое использование платформы пользовательского интерфейса адресной книги. - Загружаемый исходный код работает как описано (когда вы добавляете человека с именем "Appleseed" в вашу адресную книгу или меняете имя человека в строке 246 (QuickContactsViewController.m) на то, что уже существует в вашей адресной книге).

Вопрос: Как мы можем изменить функцию -(void)showPersonViewController функционировать таким образом, чтобы ABPersonViewController "picker" уже находится в режиме редактирования (с видимой кнопкой редактирования "Готово"), когда он открывается (после того, как он был помещен в стек навигационного контроллера).

В версиях iOS до "7" это был простой вопрос, например, вставить picker.editing = YES; перед тем, как вставить сборщик в стек nav, чтобы увидеть его в режиме редактирования, как только он откроется (см. код ниже).

В iOS7 это больше не работает.

Это ошибка в iOS7, если так, есть ли простой обходной путь (а не, например, обратный инжиниринг ABPersonViewController учебный класс)? - Или это нужно кодировать по-другому, в наши дни?

Ждем ваших комментариев.

-(void)showPersonViewController
{
    // Search for the person named "Appleseed" in the address book
    NSArray *people = (NSArray *)CFBridgingRelease(ABAddressBookCopyPeopleWithName(self.addressBook, CFSTR("Appleseed")));
    // Display "Appleseed" information if found in the address book 
    if ((people != nil) && [people count])
    {
        ABRecordRef person = (__bridge ABRecordRef)[people objectAtIndex:0];
        ABPersonViewController *picker = [[ABPersonViewController alloc] init];
        picker.personViewDelegate = self;
        picker.displayedPerson = person;
       // Allow users to edit the person’s information
       picker.allowsEditing = YES;

       picker.editing = YES;   // in iOS6 this works, in iOS7 it does not

       [self.navigationController pushViewController:picker animated:YES];
    }   
    ...
    ...
}

1 ответ

Вы можете использовать ABNewPersonViewController вместо ABPersonViewController, ниже приведен код:

ABNewPersonViewController *picker = [[[ABNewPersonViewController alloc] init] autorelease];
picker.newPersonViewDelegate = self;
picker.displayedPerson = person;
picker.navigationItem.title=@"edit contact";

[self.navigationController pushViewController:picker animated:YES];
Другие вопросы по тегам