0

アラートを表示したいのですが、実行しました。しかし、問題があります。グローバル値を変更したり、 of のハンドラに関数を追加したりできませUIAlertActionUIAlertController。例えば:

let alertController = UIAlertController(title: "",
                                            message: "Do you want to leave ?", preferredStyle: UIAlertControllerStyle.Alert)
let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil)
let okAction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default,
                             handler: {
                                action in
self.appDelegate.globalvalue = true 

})
alertController.addAction(cancelAction)
alertController.addAction(okAction)
if let popoverController = alertController.popoverPresentationController {
    popoverController.sourceView = sender as! UIView
    popoverController.sourceRect = sender.bounds
}
self.presentViewController(alertController, animated: true, completion: nil)

ofself.appDelegate.globalvalue = trueのハンドラーを追加しますが、値は常に false です... true に変更されません...UIAlertActionUIAlertControllerself.appDelegate.globalvalueself.appDelegate.globalvalue

UIAlertActionofのハンドラの値を変更するにはどうすればよいUIAlertControllerですか? または アラートで [OK] をクリックした後にグローバル値を変更できますか? あなたのすべてに感謝します:)

4

1 に答える 1

0

への参照をどのように取得しますAppDelegateか? 次のコードが機能するはずです。

class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var globalValue = false

}

class ViewController: UIViewController {

    var appDelegate: AppDelegate {
        return UIApplication.sharedApplication().delegate as! AppDelegate
    }

    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)

        let alert = UIAlertController(title: nil, message: "set global value to true", preferredStyle: .Alert)
        let action = UIAlertAction(title: "ok", style: .Default) { (action) in
            self.appDelegate.globalValue = true
            print("after: \(self.appDelegate.globalValue)")
        }
        alert.addAction(action)

        print("before: \(self.appDelegate.globalValue)")
        presentViewController(alert, animated: true, completion: nil)
    }

}
于 2016-04-12T08:10:41.193 に答える