質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

1回答

2757閲覧

UIAlertActionのボタンを動的に生成したい

YosukeNakayama

総合スコア80

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/03/11 08:29

UIAlertControllerで、Actionの数を動的に?(適切な表現かわからないのですが)
追加したいのですが、 let myOkAction: UIAlertActionのインスタンスをmyAlert.addAction(myOkAction)する際に、
変数名が被ってしまい、動的にボタンを生成できません、、
どなたか解決方法を教えて頂けないでしょうか?

swift

1example 2 3//前提が、menuListの数は一定ではありません。 4var menuList: [String] = ["menu1", "menu2", "menu3"] 5 6for menu in menuList{ 7 // UIAlertControllerを作成する. 8 let myAlert: UIAlertController = UIAlertController(title: menu, message: "メッセージ", preferredStyle: .Alert) 9 10 // OKのアクションを作成する. 11 let myOkAction = UIAlertAction(title: "OK", style: .Default) { action in 12 print("Action OK!!") 13 } 14 15*****変数名が被っている↓ 16 // OKのActionを追加する. 17 myAlert.addAction(myOkAction) 18 19 // UIAlertを発動する. 20 presentViewController(myAlert, animated: true, completion: nil) 21 22}

参考コード
https://sites.google.com/a/gclue.jp/swift-docs/ni-yinki100-ios/uikit/uialertcontrollerdearatowo-biao-shi

出力されるUIAlertは menu3のみで、
menu1, menu2, menu3は出力されていません。

原因はわかっているのですが、どう対処して、
動的にメニューを追加すればよいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

swift

1: 2 var menuList: [String] = ["menu1", "menu2", "menu3"] 3 4 // UIAlertControllerを作成する. 5 let myAlert: UIAlertController = UIAlertController(title: "メニュータイトル", message: "メニューメッセージ", preferredStyle: .Alert) 6 7 for menu in menuList { 8 9 // OKのアクションを作成する. 10 let myOkAction = UIAlertAction(title: menu, style: .Default) { action in 11 print("Action OK!!") 12 } 13 14 // OKのActionを追加する. 15 myAlert.addAction(myOkAction) 16 } 17 // UIAlertを発動する. 18 presentViewController(myAlert, animated: true, completion: nil)

こういうことでしょうか?

実行結果

投稿2016/03/11 09:18

編集2016/03/11 09:27
Rumi_Igarashi

総合スコア47

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YosukeNakayama

2016/03/11 09:20

それをすると、一個しか生成されなかったんです、、
YosukeNakayama

2016/03/11 09:20

ご回答ありがとうございます!!
Rumi_Igarashi

2016/03/11 09:28

上記コードを実行した結果のスクリーンショットを貼ってみました。 こういうことではありませんでしたか・・・?
YosukeNakayama

2016/03/11 11:17

本当ですか? ちょっと一回テストします。 他の要因でできていなかった可能性もありますね、すいませんちょっとテストします!
YosukeNakayama

2016/03/12 14:45

すいません、僕の勘違いでした! ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問