Di Swift 2, Anda ingin melakukan sesuatu seperti ini untuk menunjukkannya dengan benar di iPhone dan 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)
}
Jika Anda tidak mengatur presenter, Anda akan berakhir dengan pengecualian pada iPad -[UIPopoverPresentationController presentationTransitionWillBegin]
dengan pesan berikut:
Pengecualian Fatal: NSGenericException Aplikasi Anda telah menyajikan UIAlertController (<UIAlertController: 0x17858a00>) dengan gaya UIAlertControllerStyleActionSheet. ModalPresentationStyle dari UIAlertController dengan gaya ini adalah UIModalPresentationPopover. Anda harus memberikan informasi lokasi untuk popover ini melalui popoverPresentationController pengontrol peringatan. Anda harus menyediakan sourceView dan sourceRect atau barButtonItem. Jika informasi ini tidak diketahui saat Anda menampilkan pengontrol lansiran, Anda dapat memberikannya dalam metode UIPopoverPresentationControllerDelegate -prepareForPopoverPresentation.