2015-12-12 3 views
11

iPhone/iPadアプリでは、誰かがUIBarButtonItemをクリックしたときに共有する機能があります。UIActivityViewControllerはsourceViewをUIBarButtonItemに設定しました

UIActivityViewController * activityVC = [[UIActivityViewController alloc] initWithActivityItems:shareItems applicationActivities:nil]; 

    [self presentViewController:activityVC animated:YES completion:nil]; 

ただし、iPadの場合、activityVCのsourceViewを設定する必要があるため、このコードはエラーとなります。

このコードを追加する必要がありますが、このコードをUIBarButtonItemの位置に設定する必要があります。

activityVC.popoverPresentationController.sourceView = SomeUIBarButtonItem; 

しかし、UIBarButtonItemは(私と私はこのロジックを取得しないため、本当に奇妙である)のUIViewを継承していないので、これは動作しません。

共有ポップオーバーがバーボタン項目を指し示すように設定する方法はありますか?

おかげで、

+10

あなたは 'UIPopoverPresentationController'の' barButtonItem'プロパティを見ましたか? – rmaddy

+0

ああ、私はそこにbarButtonItemがあることを認識し、それは期待どおりに動作します!助けてくれてありがとう! –

答えて

18

あなたはポップオーバーのbarButtonItemプロパティを使用するだけです。

だから、iPadの上ActivityViewControllerまたはUIAlertControllerをサポートするための適切なコード:iPadのためのフルサポートのための

popover.barButtonItem = self.navigationItem.rightBarButtonItem; 

別の例として、UIAlertControllerと(しかしActivityViewControllerとちょうど同じように動作します):

UIPopoverPresentationController *popover = alert.popoverPresentationController; 
if (popover) 
{ 
    popover.barButtonItem = self.navigationItem.rightBarButtonItem; 
    popover.permittedArrowDirections = UIPopoverArrowDirectionUp; 
} 

[self presentViewController:alert animated:YES completion:nil]; 
関連する問題