Swift 2 में, आप iPhone और iPad पर इसे ठीक से दिखाने के लिए ऐसा कुछ करना चाहते हैं:
func confirmAndDelete(sender: AnyObject) {
guard let button = sender as? UIView else {
return
}
let alert = UIAlertController(title: NSLocalizedString("Delete Contact?", comment: ""), message: NSLocalizedString("This action will delete all downloaded audio files.", comment: ""), preferredStyle: .ActionSheet)
alert.modalPresentationStyle = .Popover
let action = UIAlertAction(title: NSLocalizedString("Delete", comment: ""), style: .Destructive) { action in
EarPlaySDK.deleteAllResources()
}
let cancel = UIAlertAction(title: NSLocalizedString("Cancel", comment: ""), style: .Cancel) { action in
}
alert.addAction(cancel)
alert.addAction(action)
if let presenter = alert.popoverPresentationController {
presenter.sourceView = button
presenter.sourceRect = button.bounds
}
presentViewController(alert, animated: true, completion: nil)
}
यदि आप प्रस्तुतकर्ता सेट नहीं करते हैं, तो आप -[UIPopoverPresentationController presentationTransitionWillBegin]
निम्नलिखित संदेश के साथ iPad पर एक अपवाद के साथ समाप्त करेंगे :
घातक अपवाद: NSGenericException आपके एप्लिकेशन ने शैली UIAlertControllerStyleActionleheet पर UIAlertController (<UIAlertController: 0x17858a00>) प्रस्तुत किया है। इस शैली के साथ एक UIAlertController की modalPresentationStyle UIModalPresentationPopover है। आपको इस जानकारी के लिए अलर्ट नियंत्रक के popoverPresentationController के माध्यम से जानकारी प्रदान करनी होगी। आपको या तो एक sourceView और sourceRect या एक barButtonItem प्रदान करना होगा। यदि यह जानकारी ज्ञात नहीं है जब आप अलर्ट नियंत्रक प्रस्तुत करते हैं, तो आप इसे UIPopoverPresentationControllerDelegate विधि -prepareForPopoverPresentation में प्रदान कर सकते हैं।