Настройка панели навигации ABPeoplePickerNavigationController в iOS 8

Я пытаюсь настроить панель навигации ABPeoplePickerNavigationController, добавив пользовательский UIBarButtonItem как левый и правый barbuttonitem контроллера верхнего уровня UINavigationController. Эта функция отлично работала в iOS7 и предыдущих версиях, но не в iOS 8.

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{

 navigationController.topViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addNewContact:)];

 navigationController.topViewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancel:)];
}

Вышеприведенный код выполняется, но он не действует. В PeoplePickerNavigationController отображается панель навигации по умолчанию, с ее группами по умолчанию "Группы" и "Отмена".

Что изменилось в iOS 8? Нужно ли переустанавливать, что я уже сделал?

Изменить: Я зарегистрировал верхний ViewController в стеке навигации. Он называется CNContactPicker.

Ответ 1

Я сделаю снимок:

В ios 8 я считаю, что Apple каким-то образом превратила это в расширение. Это означает, что код - это приложение "Контакты". Вероятно, он работает в другом контексте.

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

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