2014-09-24 9 views
12

Ich versuche ABPeoplePickerNavigationController 's Navigationsleiste anpassen, indem benutzerdefinierte UIBarButtonItem als linkes und rechtes barbuttonitem von UINavigationController' s Draufsicht Controller hinzufügen. Diese Funktion funktionierte gut in iOS7 und früheren Versionen, aber nicht in iOS 8.Anpassen der ABPeoplePickerNavigationController Navigationsleiste in 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:)]; 
} 

Der obige Code ausgeführt wird, aber es hat keine Wirkung. Der PeoplePickerNavigationController zeigt seine Standardnavigationsleiste mit den Standardelementen Groups und Cancel an.

Was hat sich in iOS 8 geändert? Muss ich das neu implementieren, was habe ich schon gemacht?

Bearbeiten: Ich habe den oberen ViewController im Navigationsstack protokolliert. Es heißt CNContactPicker.

+0

Haben Sie versucht, dies zu setzen? navigationController.topViewController.navigationItem.rightBarButtonItems navigationController.topViewController.navigationItem.leftBarButtonItems anstelle des rightBarButtonItem und leftBarButtonItem –

+0

Ja, versucht das auch. Aber es funktioniert nicht. –

+0

@ XaviValero, ich habe das gleiche Problem wie du. Hast du die Lösung gefunden? Ich würde mich freuen, wenn Sie mir helfen können –

Antwort

1

Ich werde einen Schuss nehmen:

In ios 8 Ich glaube, dass Apple-irgendwie diese in eine Erweiterung gemacht hat. Das bedeutet, dass der Code die Kontakte-App ist. Es läuft wahrscheinlich in einem anderen Kontext.

Ich denke dies, weil ich gelesen habe, dass Sie nicht mehr den Benutzer um Kontaktlistenzugriff bitten müssen, diese Picker zu verwenden. Das muss bedeuten, dass sie nicht wirklich Teil deiner eigenen App sind, also eine Erweiterung.

Es könnte einen Weg geben, dies zu verhindern. Meine Wette ist, dass Sie ein ABAddressBook an den Picker übergeben müssen, um dies zu tun.