This is the code I'm using to call the people picker, but the prompt label text doesn't change:
ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
picker.peoplePickerDelegate = self;
picker.displayedProperties = [NSArray arrayWithObjects: [NSNumber numberWithInt:kABPersonEmailProperty], nil];
pic开发者_StackOverflowker.navigationItem.prompt = @"Choose a contact to...";
[self presentModalViewController:picker animated:YES];
There is a key piece of information missing in the other answers, and not quite obvious. You need to set the prompt after the line:
[self presentModalViewController:picker animated:YES];
So, if you do it like this, it works:
[self presentModalViewController:picker animated:YES];
picker.navigationBar.topItem.prompt = @"Choose a contact to...";
You can change the title with:
picker.navigationBar.topItem.title = @"iPhone Contacts";
And you can change the prompt with:
picker.navigationBar.topItem.prompt = @"iPhone Contacts";
I've just stumbled upon a way to do this. However, I'm not sure it's the best way. Just replace in the code above the line
picker.navigationItem.prompt = @"Choose a contact to...";
With
picker.navigationBar.topItem.prompt = @"Choose a contact to...";
If you're sub-classing the ABPeoplePickerNavigationController you need to set this once the view controller is pushed. This is in effect what achieving the same thing that Johan suggested, but from within the class.
In the ABPeoplePickerNavigationController implement the following delegate method like so:
-(void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController
animated:(BOOL)animated
{
[[[self navigationBar] topItem] setPrompt:@"test"];
}
精彩评论