Swift 2'de, iPhone ve iPad'de düzgün şekilde göstermek için buna benzer bir şey yapmak istiyorsunuz:
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)
}
Sunucuyu ayarlamazsanız, iPad'de -[UIPopoverPresentationController presentationTransitionWillBegin]
aşağıdaki mesajla birlikte bir istisna ile karşılaşırsınız:
Önemli Özel Durum: NSGenericException Uygulamanız, UIAlertControllerStyleActionSheet stilinde bir UIAlertController (<UIAlertController: 0x17858a00>) sundu. Bu stile sahip bir UIAlertController modalPresentationStyle, UIModalPresentationPopover'dır. Uyarı denetleyicisinin popoverPresentationController aracılığıyla bu açılır pencere için konum bilgisi sağlamalısınız. Bir sourceView ve sourceRect veya bir barButtonItem sağlamanız gerekir. Uyarı denetleyicisini sunduğunuzda bu bilgi bilinmiyorsa, UIPopoverPresentationControllerDelegate yönteminde -prepareForPopoverPresentation sağlayabilirsiniz.