59

どこかを指す矢印なしでポップオーバーを提示することは可能ですか?

4

17 に答える 17

108

はい、それは可能です:

 [self.popoverController presentPopoverFromBarButtonItem:anItem   
                                permittedArrowDirections:0
                                                animated:YES];

ゼロは方向がないことを表します。

于 2010-09-02T00:54:09.783 に答える
25

iPhoneとswift2.0の場合は、これを試してください

ポップオーバーを開始するコード

initiatePopover(){
    let popoverContent = self.storyboard?.instantiateViewControllerWithIdentifier("XYZController") as! XYZController
    let nav = UINavigationController(rootViewController: popoverContent)
    nav.modalPresentationStyle = UIModalPresentationStyle.Popover
    let popover = nav.popoverPresentationController
    popoverContent.preferredContentSize = CGSizeMake(250 ,200)
    popover!.delegate = self
    popover!.sourceView = self.view
    popover!.sourceRect = CGRectMake(200,200,0,0)
    popover!.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0)
    self.presentViewController(nav, animated: true, completion: nil)
}

そしてこれをViewControllerに追加します

func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
    return UIModalPresentationStyle.None
}
于 2015-10-09T09:40:06.817 に答える
16

Swift4

popover.permittedArrowDirections = []              
于 2018-09-05T12:33:09.953 に答える
11

permittedArrowDirectionsを0に設定します。

permittedArrowDirections:0

コード-

[self.popoverController presentPopoverFromBarButtonItem:anItem   
                                permittedArrowDirections:0
                                                animated:YES];

ゼロは「NoDirection」を示します。

于 2011-09-12T09:45:58.660 に答える
9

Swift3、このコードは私のために働きます

popover.permittedArrowDirections = .init(rawValue: 0)
于 2017-01-19T10:31:39.793 に答える
5

の解決策は次のとおりですSwift 2.0iOS9

popoverViewController?.permittedArrowDirections = UIPopoverArrowDirection()
于 2016-01-28T11:36:02.637 に答える
5

Swiftでは、次のことを簡単に行うことができます。

popoverPresentationController.permittedArrowDirections = []

別の構成では、次を使用できた可能性があります。

popoverPresentationController.permittedArrowDirections = [.up, .down]
于 2018-04-01T15:29:03.610 に答える
4

これを試してみてください、それは私のために働きます。

[self.popoverViewController presentPopoverFromRect:rect inView:self.view  permittedArrowDirections:0 animated:YES];
于 2011-07-07T07:08:41.223 に答える
4

UIPopoverArrowDirectionswift 3では、このための拡張機能を構築できます。

extension UIPopoverArrowDirection {
    public static var noArrow: UIPopoverArrowDirection {
        return UIPopoverArrowDirection(rawValue: 0)
    }
}

そしてあなたができること:

popoverPresentationController!.permittedArrowDirections = .noArrow
于 2017-03-18T10:42:26.590 に答える
3

これは私にとってはうまくいきます。

[popoverController presentPopoverFromRect:CGRectMake(0, 0, 20, 20)
                                    inView:self.view 
                  permittedArrowDirections:NULL 
                                  animated:YES];

コーディングをお楽しみください。

于 2013-07-10T09:52:45.030 に答える
3

私の場合、迅速な開発者向け

popoverController.sourceView = self.view
popoverController.sourceRect = self.view.bounds
popoverController.backgroundColor = UIColor.brownColor()

popoverController.permittedArrowDirections = UIPopoverArrowDirection.init(rawValue: 0)
popoverController.sourceRect = CGRectMake(width/4, hieght/4, width/2, hieght/2);
于 2016-04-14T11:18:22.690 に答える
2

いいえ、UIPopoverArrowDirectionNoneオプションはありませんUIPopoverArrowDirectionUnknown。それを使用して提示しようとすると、例外がスローされます。

ポップオーバーコントローラーの代わりに、提示しているコントローラーを呼び出して、またはpresentModalViewController:animated:のモーダルプレゼンテーションスタイルを持つように設定できます。これらは、ポップオーバーよりも伝統的なポップアップ画面です。UIModalPresentationFormSheetUIModalPresentationPageSheet

于 2010-08-04T18:38:33.773 に答える
2

矢印を表示したくない場合は、ポップオーバーを使用しないでください。ビューコントローラをモーダルとして提示し、代わりにUIModalPresentationFormSheetを使用します。

例:

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MyStoryBoard" bundle:nil];
UIViewController* viewController = [sb instantiateViewControllerWithIdentifier:@"myViewController"];
viewController.modalPresentationStyle = UIModalPresentationFormSheet;
[presenterViewController presentViewController: viewController animated:YES completion:^{

}];
于 2014-07-14T16:10:40.773 に答える
1

これを試してみてください

[popOverController presentPopoverFromRect:CGRectMake(0, 0, 30, 40) inView:popOverContentView permittedArrowDirections:0 animated:NO];
于 2012-12-03T11:30:00.627 に答える
1

タッチ座標に応じてメニューを表示するためにポップオーバーを使用します。この場合、ポップオーバーはself.viewの最大の高さを使用します

CGRect popeverFrame = CGRectMake(touchPoint.x, touchPoint.y, 0, 0);
[self.popover presentPopoverFromRect:popeverFrame
                              inView:self.view
            permittedArrowDirections:UIPopoverArrowDirectionAny
                            animated:YES];

しかし、0方向を使用すると。ポップオーバー長方形は、高さを最大に設定せず、適切なプロパティによってのみ設定できます。

CGRect popeverFrame = CGRectMake(touchPoint.x, touchPoint.y, 0, 0);
[self.popover presentPopoverFromRect:popeverFrame
                              inView:self.view
            permittedArrowDirections:UIPopoverArrowDirectionAny
                            animated:YES];

これがお役に立てば幸いです:UIPopOverControllerサイズのヘルプ

于 2013-08-27T05:58:51.247 に答える
0

ポップオーバー方向をなしにして、ビューコントローラーの中央に表示するには:

let PopSrnVar = popoverPresentationController
let ConRctVar = view.frame
PopSrnVar!.sourceRect = CGRectMake(ConRctVar.width/4, ConRctVar.height/4, ConRctVar.width/2, ConRctVar.height/2)
// To make arrows as none
PopSrnVar!.permittedArrowDirections = UIPopoverArrowDirection()
于 2016-09-30T12:33:09.873 に答える
-2

SWIFTの簡単な解決策:

popover!.permittedArrowDirections = nil
于 2015-05-27T10:44:43.687 に答える