「ひとかじりのりんご」

へっぽこエンジニアの備忘録。こちらは旧ブログ。新しい方はこちら→「http://sbkro.github.io」

ABPeoplePickerNavigationControllerで、遷移先をカスタマイズする方法

ABPeoplePickerNavigationControllerで、アドレスを選択した時に、自分で作成したビューへ遷移したかったんだけど、詰まってしまったんでメモ書き。

ABPeoplePickerNavigationControllerで、アドレスを選択した時の挙動は、ABPeoplePickerNavigationControllerDelegateのpeoplePickerNavigationController:shouldContinueAfterSelectingPerson:で実装することができる。

遷移先をオリジナルのビューにするためには、以下の2点に気をつける必要がある。

  • デリゲートメソッドの戻り値としてNOを返却する。
  • 親ビューのナビゲーションコントローラに対して、遷移先のビューを登録する。
- (BOOL) peoplePickerNavigationController: 
              (ABPeoplePickerNavigationController *) peoplePicker 
	      shouldContinueAfterSelectingPerson: 
              (ABRecordRef) person
{
        // 自分で作成したビューを生成する。
        View * v = [[View alloc] initWithNibName:@"View" bundle:nil];
	[[peoplePicker topViewController].navigationController pushViewController:v animated:YES];
	[v release];
	
    return NO;
}

topViewControllerというのが盲点でした。