1

これは古い学校の質問ですが、私はウェブを検索し、廃止予定の解決策を見つけました。 UIAlertcontrollerpopOver(矢印の方向を上にして)barButtonに実装する方法を教えてください。コードは次のとおりです。UIBarbuttonでPopOver(矢印の方向を上にして)としてUIAlertcontrollerを実装する方法

- (IBAction)eventSortingAction:(UIBarButtonItem *)sender { 

UIAlertController * view= [UIAlertController 
         alertControllerWithTitle:@"My Title" 
         message:@"Select you Choice" 
         preferredStyle:UIAlertControllerStyleActionSheet]; 

UIAlertAction* ok = [UIAlertAction 
       actionWithTitle:@"OK" 
       style:UIAlertActionStyleDefault 
       handler:^(UIAlertAction * action) { 
        //Do some thing here 
        [view dismissViewControllerAnimated:YES completion:nil]; 

       }]; 
UIAlertAction* cancel = [UIAlertAction 
        actionWithTitle:@"Cancel" 
        style:UIAlertActionStyleCancel 
        handler:^(UIAlertAction * action) { 
         [view dismissViewControllerAnimated:YES completion:nil]; 

        }]; 
[view addAction:ok]; 
[view addAction:cancel]; 
[view setModalPresentationStyle:UIModalPresentationPopover]; 
view.modalInPopover = YES; 
view.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionUp; 
view.popoverPresentationController.delegate = self; 
[self presentViewController:view animated:YES completion:nil]; 

UIView* senderView = [sender valueForKey:@"view"]; //HACK 
UIPopoverPresentationController* popover = view.popoverPresentationController; 
if (popover) { 
    popover.sourceView = senderView; 
    popover.sourceRect = senderView.bounds; 
    popover.permittedArrowDirections = UIPopoverArrowDirectionUp; 
    popover.barButtonItem = self.actionBarButton; 
    popover.delegate = self; 
}} 

明らかに私はいつも "popover = nil"を持っています。助けてください!前もって感謝します!

ところで、このコードは私のものではないので、Xcodeでテストしてください。

+0

「UIAlertController」を実際に作成するコードで質問を更新してください。投稿したコードと実際に何が起こっているのかを説明してください。 – rmaddy

+0

こんにちはrmaddy私は以下の更新された質問を掲載しました。私は私の質問を編集することはできません - まだ評判が欠けています。 – macky12345

+0

もちろん編集できます。あなたの質問の下の編集リンクをクリックしてください。答えを投稿しないでください。 – rmaddy

答えて

0
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil 
                     message:nil 
                    preferredStyle:UIAlertControllerStyleActionSheet]; 

UIAlertAction *actnCamera = [UIAlertAction actionWithTitle:@"Camera" style:UIAlertActionStyleDefault 
                handler:^(UIAlertAction * action) { 
                }]; 

UIAlertAction *actnLibrary = [UIAlertAction actionWithTitle:@"Library" style:UIAlertActionStyleDefault 
                handler:^(UIAlertAction * action) { 
                }]; 

[alertController addAction:actnLibrary]; 
[alertController addAction:actnCamera]; 
[alertController setModalPresentationStyle:UIModalPresentationPopover]; 
UIPopoverPresentationController *popPresenter = [alertController 
               popoverPresentationController]; 
popPresenter.sourceView = self.view; 
CGRect frame = self.navigationController.navigationBar.frame; 
frame.origin.x = self.navigationItem.leftBarButtonItem.width; 
popPresenter.sourceRect = frame; 
popPresenter.barButtonItem = self.navigationItem.leftBarButtonItem; 
[self presentViewController:alertController animated:YES completion:nil]; 

OUTPUT

enter image description here

+0

こんにちは、私はuibarbuttonをクリックするとアラートコントローラを表示します。私がしたいのは、私がuibarbuttonをクリックすると、このようなものです。http://stackoverflow.com/questions/25805608/present-a-uialertcontroller-from-within-a-popover-in-ios8 – macky12345

+0

@ macky12345編集を参照してください –

+0

私はiPhoneでシミュレートしていますが、まだ実装できません。これはiPadでのみ行うことができますか?または、私はこれを実装するのに間違っています。あなたのコードをコピーして貼り付けました。 – macky12345

2

ただ、これがGoogleで上位の結果であるので、思い出し:

popPresenter.barButtonItemがpopPresenter.sourceView + popPresenter.sourceRect

に代わるものですが、

See(source)

OP質問については、IBActionパラメータsenderを使用してください。

UIPopoverPresentationController *popPresenter = [alertController 
              popoverPresentationController]; 
popPresenter.barButtonItem = sender; 
[self presentViewController:alertController animated:YES completion:nil]; 
関連する問題