سؤال

هل من الممكن أن تقدم بوبوفير دون أي نوع من السهام لافتا إلى مكان ما ؟

هل كانت مفيدة؟

المحلول

نعم ، من الممكن فقط القيام:

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

الصفر لا يمثل أي اتجاه.

نصائح أخرى

لجهاز iPhone و Swift 2.0 جرب هذا

رمز لبدء Popover

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
}

تعيين permittedArrowDirections إلى 0.

permittedArrowDirections:0

شفرة -

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

صفر يخبر "Nodirection".

سويفت 3, ، هذا الرمز يعمل بالنسبة لي

popover.permittedArrowDirections = .init(rawValue: 0)

ل Swift 2.0 و iOS9 الحل هو:

popoverViewController?.permittedArrowDirections = UIPopoverArrowDirection()

جرب هذا ، إنه يعمل بالنسبة لي.

[self.popoverViewController presentPopoverFromRect:rect inView:self.view  permittedArrowDirections:0 animated:YES];

سويفت 4:

popover.permittedArrowDirections = []              

هذا يفي بالغرض بالنسبة لي.

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

استمتع بالترميز.

كلا ، لا يوجد UIPopoverArrowDirectionNone الخيار ، و UIPopoverArrowDirectionUnknown يلقي استثناء أعتقد أنه إذا حاولت استخدام ذلك لتقديمه.

بدلاً من وحدة تحكم Popover ، يمكنك الاتصال presentModalViewController:animated: وتعيين وحدة التحكم التي تقدمها للحصول على نمط عرض مشروط من UIModalPresentationFormSheet او ربما UIModalPresentationPageSheet. هذه شاشات منبثقة أكثر تقليدية من البوبوف.

في حالتي للمطورين السريع

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);

في Swift 3 ، يمكنك بناء ملف UIPopoverArrowDirection امتداد لهذا:

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

ويمكنك القيام به:

popoverPresentationController!.permittedArrowDirections = .noArrow

في سويفت ، يمكنك ببساطة القيام:

popoverPresentationController.permittedArrowDirections = []

لأنه في تكوين آخر يمكن أن تستخدمه:

popoverPresentationController.permittedArrowDirections = [.up, .down]

جرب هذه

[popOverController presentPopoverFromRect:CGRectMake(0, 0, 30, 40) inView:popOverContentView permittedArrowDirections:0 animated:NO];

لا تستخدم popovers إذا كنت لا ترغب في إظهار الأسهم. قدم وحدة تحكم العرض الخاصة بك كسيطر واستخدم ورقة uimodalpresentationformsheet بدلاً من ذلك.

مثال:

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

}];

يمكنني استخدام Popover لإظهار القائمة اعتمادًا على تنسيق اللمس. في هذه الحالة ، يستخدم Popover أقصى ارتفاع للذات

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

ولكن عندما أستخدم توجيه 0. لا يحدد Popover Rectangle ارتفاعه إلى أقصى حد ولا يمكن تعيينه إلا عن طريق الخاصية المناسبة.

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

أتمنى أن يساعد هذا: مساعدة في حجم Uipopovercontroller

لجعل البوب أكثر من اتجاه لا وجعلها تظهر في مركز تحكم عرض :

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()

حل بسيط في سويفت:

popover!.permittedArrowDirections = nil
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top