iPadでUIAlertControllerのActionSheetが落ちる問題


UIAlertControllerのActionSheetをiPadで普通にやったら落ちる。
sourceViewとsourceRectを指定しなければいけない。

MyViewController.swift
class ViewController: UIViewController {
    @IBAction func pushButton(sender: UIButton) {
        let ac = UIAlertController(title: "hoge", message: "moge", preferredStyle: .ActionSheet)
        let ok = UIAlertAction(title: "ok", style: .Default, handler: nil)
        ac.addAction(ok)

        ac.popoverPresentationController?.sourceView = view
        ac.popoverPresentationController?.sourceRect = sender.frame
        presentViewController(ac, animated: true, completion: nil)
    }
}

sourceViewは表示するviewを指定して、
sourceRectはそのviewの中のどこからピヨっと表示するかを指定する。

iPhoneではsourceViewとsourceRectは関係ない。