Question

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];  

picker.navigationItem.prompt = @"Choose a contact to...";

[self presentModalViewController:picker animated:YES];
Was it helpful?

Solution

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";

OTHER TIPS

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...";

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"];
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top