ios - pro - ipad mini




एक्शनशीट आईपैड काम नहीं कर रहा है (4)

आपको विकल्प पेश करने से पहले एक स्रोत दृश्य या बटन प्रदान करने की आवश्यकता है क्योंकि iPad पर UIPopoverPresentationController के बाद से, जैसा कि यह आपकी त्रुटि में है। इसका मतलब यह है कि आपका एक्शन शीट बटन को इंगित करता है जिससे उपयोगकर्ता को यह पता चल जाता है कि यह कहां से शुरू हुआ था।

उदाहरण के लिए, यदि आप सही नेविगेशन बार आइटम पर टैप करके अपना विकल्प प्रस्तुत कर रहे हैं। आप ऐसा कुछ कर सकते हैं:

optionMenu.popoverPresentationController?.barButtonItem = self.navigationItem.rightBarButtonItem

self.presentViewController(optionMenu, animated: true, completion: nil)

या आप इस तरह से एक दृश्य सेट कर सकते हैं: (आपको बस इन 2 में से एक की आवश्यकता है)

optionMenu.popoverPresentationController?.sourceView = yourView

self.presentViewController(optionMenu, animated: true, completion: nil)

यह भी ध्यान रखें कि यदि आप एक्शन शीट के बजाय अपने UIAlertControllerStyle को अलर्ट में बदलते हैं, तो आपको इसे निर्दिष्ट करने की आवश्यकता नहीं होगी। मुझे यकीन है कि आप इसे समझ गए होंगे लेकिन मैं इस पृष्ठ पर आने वाले किसी भी व्यक्ति की मदद करना चाहता था।

मैं अपने आवेदन में ActionSheet का उपयोग कर रहा हूं। मेरे iPhone पर यह काम करता है, लेकिन यह iPad सिम्युलेटर पर नहीं है।

यह मेरा कोड है:

@IBAction func dialog(sender: AnyObject) {

    let optionMenu = UIAlertController(title: nil, message: "Choose Option", preferredStyle: .ActionSheet)
    let deleteAction = UIAlertAction(title: "Delete", style: .Default, handler: {

        (alert: UIAlertAction!) -> Void in
        println("Filtre Deleted")
    })

    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: {
        (alert: UIAlertAction!) -> Void in
        println("Cancelled")
    })

    optionMenu.addAction(deleteAction)
    optionMenu.addAction(cancelAction)

    self.presentViewController(optionMenu, animated: true, completion: nil)
}

और मेरी त्रुटि:

अनकैप्ड अपवाद 'NSGenericException' के कारण ऐप को समाप्त करना, कारण: 'आपके एप्लिकेशन ने UIAlertControllerStyleActionSheet शैली का एक UIAlertController () प्रस्तुत किया है। इस शैली के साथ एक UIAlertController का modalPresentationStyle UIModalPresentationPopover है। आपको इस जानकारी के लिए अलर्ट नियंत्रक के popoverPresentationController के माध्यम से जानकारी प्रदान करनी होगी। आपको या तो एक स्रोत दृश्य और स्रोत प्रदान करना चाहिए या एक बारबटन इटेम। यदि यह जानकारी ज्ञात नहीं है जब आप अलर्ट नियंत्रक प्रस्तुत करते हैं, तो आप इसे UIPopoverPresentationControllerDelegate विधि -prepareForPopoverPresentation में प्रदान कर सकते हैं। '


बस ध्यान दें कि यदि आप IB में सोर्सव्यू को अपने ऐप में संबंधित चर से लिंक नहीं किया है, तो आपको यह त्रुटि भी हो सकती है।


यदि आप इसे किसी तीर के साथ केंद्र में प्रस्तुत करना चाहते हैं [ स्विफ्ट 3+ ]:

if let popoverController = optionMenu.popoverPresentationController {
        popoverController.sourceView = self.view
        popoverController.sourceRect = CGRect(x: self.view.bounds.midX, y: self.view.bounds.midY, width: 0, height: 0)
        popoverController.permittedArrowDirections = []
    }
self.present(optionMenu, animated: true, completion: nil)

प्रस्तुत करने से पहले निम्नलिखित शब्दों में कथन जोड़ें।

optionMenu.popoverPresentationController.sourceView = self.view;
optionMenu.popoverPresentationController.sourceRect = 

CGRectMake(0,0,1.0,1.0);


@IBAction func dialog(sender: AnyObject) {
    ...

    optionMenu.popoverPresentationController.sourceView = self.view;
    optionMenu.popoverPresentationController.sourceRect = CGRectMake(0,0,1.0,1.0);

    self.presentViewController(optionMenu, animated: true, completion: nil)
}

यह अच्छी तरह से काम करेगा।







uiactionsheet