开发者

How do I set an ABPeoplePickerNavigationController's prompt?

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"];
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜