UIAlertControllerに追加されたアイテムのハンドラとしてクロージャがあります。私は期待どおりに閉鎖内のid値を受け取ります。 (私はスニペットでそれを使用しません)。クロージャからビューコントローラを表示する
しかし、問題は私が別のビューコントローラに切り替えることです。しかし、私は閉鎖の中でこの呼び出しを行います。
私は次のエラーを取得する: Value of type '(ChooseProfile) ->() -> (ChooseProfile)' has no member 'present
「
は、どのように私は私のクロージャ内から別のビューコントローラに切り替えることができますか?
class ChooseProfile: UIViewController {
let closure = { (id: String) in { (action: UIAlertAction!) -> Void in
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewController(withIdentifier: "test") as! UIViewController
self.present(nextViewController, animated:true, completion:nil)
}}
}
私はこのために、このクロージャを使用します。
override func viewDidAppear(_ animated: Bool) {
let alert = UIAlertController(title: "Choose a Device", message: "Which device would you like to use in this app?", preferredStyle: UIAlertControllerStyle.alert)
for dev in (DataSingleton.instance.getDevices())! {
alert.addAction(UIAlertAction(title: dev.getName(), style: UIAlertActionStyle.default, handler: closure(dev.getId())))
}
alert.addAction(UIAlertAction(title: "Add a new Profile", style: UIAlertActionStyle.destructive, handler: nil))
// show the alert
self.present(alert, animated: true, completion: nil)
}
私は、デバイスのリストに基づいてアラートアクションを追加します。そして、私はデバイスをクリックするとidを取得したい。
あなたはこの閉鎖をどこで宣言していますか? – vacawama
@vacawama私の質問を編集しました – da1lbi3
VCのプロパティはクロージャですか? – vacawama