我试图隐藏ABPeoplePickerNavigationController的取消按钮。以下代码在iOS 7.1模拟器中运行时正常,正确隐藏按钮。但是,在iOS 8.4模拟器中运行时它没有任何效果。在这两种情况下,日志消息都写入调试器,因此我知道代码正在执行。
除了这段代码之外,我还尝试了继承ABPeoplePickerNavigationController(即使Apple文档不说)并在viewDidLoad方法中将按钮设置为nil,但这对iOS 8也没有影响。
谷歌搜索,有很多帖子询问如何做到这一点,大多数都有答案。但是,没有一个答案似乎在iOS 8中有效。我也尝试过以下帖子中提出的解决方案(以及其他许多方法)但没有成功。
有没有人找到一种方法来隐藏iOS 8中ABPeoplePickerNavigationController的取消按钮?
-(void)showPeoplePickerController
{
ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
picker.peoplePickerDelegate = self;
picker.delegate = self;
// Display only a person's phone, email, and birthdate
NSArray *displayedItems = [NSArray arrayWithObjects:[NSNumber numberWithInt:kABPersonPhoneProperty],
[NSNumber numberWithInt:kABPersonEmailProperty],
[NSNumber numberWithInt:kABPersonBirthdayProperty], nil];
picker.displayedProperties = displayedItems;
// Show the picker
[self presentViewController:picker animated:YES completion:nil];
}
-(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
NSLog(@"Attempting to hide cancel button...");
navigationController.topViewController.navigationItem.rightBarButtonItem = nil;
}