1. ホーム
  2. ios

[解決済み] UIAlertActionの書き込みハンドラ

2022-10-07 18:11:12

質問

を発表しています。 UIAlertView をユーザーに送るのですが、ハンドラをどう書けばいいのかわかりません。これが私の試みです。

let alert = UIAlertController(title: "Title",
                            message: "Message",
                     preferredStyle: UIAlertControllerStyle.Alert)

alert.addAction(UIAlertAction(title: "Okay",
                              style: UIAlertActionStyle.Default,
                            handler: {self in println("Foo")})

Xcodeで問題が多発するんです。

ドキュメントによると convenience init(title title: String!, style style: UIAlertActionStyle, handler handler: ((UIAlertAction!) -> Void)!)

ブロック/クロージャ全体は、現在、私の頭を少し越えています。どんな提案でも大いに結構です。

どのように解決するのですか?

ハンドラ内のselfの代わりに、(alert: UIAlertAction!)と記述してください。これで、あなたのコードは次のようになります。

    alert.addAction(UIAlertAction(title: "Okay",
                          style: UIAlertActionStyle.Default,
                        handler: {(alert: UIAlertAction!) in println("Foo")}))

これがSwiftでハンドラを定義する正しい方法です。

Brianが以下で指摘するように、これらのハンドラを定義する簡単な方法もあります。彼の方法を使用することは本で説明されており、クロージャと題されたセクションをご覧ください。