IOS8 जीएम के साथ पॉपओवर से UIActionSheet




uipopovercontroller uialertcontroller (4)

IPad का समर्थन करने के लिए, इस कोड को शामिल करें:

alertView.popoverPresentationController?.sourceView = self.view
alertView.popoverPresentationController?.sourceRect = self.view.bounds
// this is the center of the screen currently but it can be any point in the view

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

पॉपओवर से UIActionSheet दिखाने की कोशिश करते हुए किसी को भी यह संदेश मिल रहा है?

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

पहले GM के लिए मैंने UIActionSheet को UIAlertController में परिवर्तित करने के लिए कुछ वर्कअराउंड का उपयोग किया था और यह ठीक काम कर रहा है। हालांकि ऐसा लगता है कि Apple ने UIActionSheet मुद्दों को हल करने की कोशिश की और मैं अपने वर्कअराउंड का उपयोग नहीं करना चाहता था - लेकिन ऐसा लगता है कि मेरे पास कोई विकल्प नहीं है ...


UIAlertController केवल iOS8 है, और iOS7 का समर्थन करने की आवश्यकता है, मैं इसका उपयोग कर रहा हूं। मैं iPad पर एक मास्टर / विस्तार लेआउट में एक मास्टर दृश्य पर इस में भाग गया। मैं इसके साथ काम करने में सक्षम था (ठीक से इसे ठीक नहीं) [क्रियाSheet showInView:] का उपयोग करके मूल UISplitViewController से UIActionSheet बढ़ाकर। सौभाग्य।


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

if let popoverController = alertController.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(alertController, animated: true, completion: nil)

यदि आप उपयोगकर्ता द्वारा UITableView भीतर एक सेल पर चयन करने के बाद एक्शन शीट प्रस्तुत कर रहे हैं। मैंने पाया कि यह अच्छी तरह से काम करता है:

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Directions" 
                                                               message:@"Select mode of transportation:"
                                                        preferredStyle:UIAlertControllerStyleActionSheet];
alert.popoverPresentationController.sourceView = cell;
alert.popoverPresentationController.sourceRect = cell.bounds;
UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil];
//...
[self presentViewController:alert animated:YES completion:nil];




uialertcontroller