2011-06-28 10 views
4

私はnavigationControllerスタックを持つUIPopoverを持っています。そのスタックの2番目のビューから、ABPeoplePickerNavigationControllerをモーダルでポップオーバーに表示します。私はこれが働いているが、私はmodalViewControllerを却下すると、UIPooverの元のナビゲーションコントローラがポップオーバーから欠落しています。この作業を適切に行う方法はありますか?以下のコード:UIPopover内にABPeoplePickerNavigationControllerを表示




    (IBAction)showPicker:(id)sender { 
     ABPeoplePickerNavigationController *picker = 
      [[ABPeoplePickerNavigationController alloc] init]; 
     picker.peoplePickerDelegate = self; 

     picker.modalPresentationStyle = UIModalPresentationCurrentContext; 
     picker.modalInPopover = YES; 
     [self presentModalViewController:picker animated:YES]; 
     // self is the 2nd viewController in the original navigation stack 
     [picker release]; 
    } 

    (void)peoplePickerNavigationControllerDidCancel: 
     (ABPeoplePickerNavigationController *)peoplePicker { 
      [self dismissModalViewControllerAnimated:YES]; 
    } 

+0

と動作するようにこれを得ることに全く運がなかったです - ピッカーは常にポップオーバーをオーバーレイする新しいビューで開きます。あなたがそれを上回らないようにするためにあなたがした他の魔法がありますか?そうであれば、それをコメントとして追加したり、上記の解決策を編集したりできますか? –

+0

さて、私はついにそれを働かせました。ピッカーを表示しようとしていたビューのpopoverContentSizeが小さすぎました。私はpickerにcontentSizeForViewInPopoverプロパティを要求しました。これはフルハイト320幅で、popoverContentSizeをこの数値に設定しました。 –

答えて

0

問題は、以下のように解決:私は数時間contentSizeForViewInPopover、modalTransitionStyle、およびmodalPresentationStyleの様々な組み合わせで周り果たしている

[self.navigationController presentModalViewController:picker animated:YES]; 
関連する問題