Buttonを押すことでアラートが表示され、選択肢次第で異なる結果の文字がlabelに反映される方法を勉強中です。
結果の文字がlabelに表示されたのち、先ほど押したButtonを押すと、先ほどとは異なるアラートが表示され、その選択肢次第によって、異なる結果の文字が表示される…という具合に、樹形図的広がりを見せるようにしたいと考えています。たとえば、最初にButtonを押すことでアラート1が表示され、選択肢A・BのうちAを選ぶと、ある文章が表示されます。そこから先ほどと同じButtonを押すとアラート2が表示され、選択肢が出てくる…。という具合にしたいです。
UIAlertAction 中にさらに選択肢の定数(let c & let d)を置き、alertController2 として別アラートにして表示させるという指示を @IBAction func button の中に置けばいけるのかと思いましたが、さすがに無理があるというか、安直というか、そう都合よくは行きませんでした。
とりあえず、アラート1でAを選択した場合に、アラート2でC/Dという選択肢が表示されるようにしたいと考えています。
この場合、どの点を改善していけばよろしいでしょうか。どうかご教授をお願いしたいです。
Swift
1import UIKit 2 3class ViewController: UIViewController { 4 5 @IBOutlet weak var label: UILabel! 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 } 10 11 override func didReceiveMemoryWarning() { 12 super.didReceiveMemoryWarning() 13 } 14 15 @IBAction func button(_ sender: Any) { 16 17 18 let alertController = UIAlertController(title: "アラート1", message: "どうしますか?", preferredStyle: UIAlertControllerStyle.alert) 19 20 let alertController2 = UIAlertController(title: "アラート2", message: "どうしますか?", preferredStyle: UIAlertControllerStyle.alert) 21 22 let a = UIAlertAction(title:"A", style: UIAlertActionStyle.default) 23 { (action: UIAlertAction) in 24 self.label.text = "Aを選んだ場合の結果文" 25 26 //この部分に無理やり感があります。 27 28 let c = UIAlertAction(title:"C", style: UIAlertActionStyle.default) 29 { (action: UIAlertAction) in 30 self.label.text = "Cを選んだ場合の結果文" } 31 32 let d = UIAlertAction(title:"D", style: UIAlertActionStyle.default) 33 { (action: UIAlertAction) in 34 self.label.text = "Dを選んだ場合の結果文" } 35 } 36 37 let b = UIAlertAction(title:"B", style: UIAlertActionStyle.default) 38 { (action: UIAlertAction) in 39 self.label.text = "Bを選んだ場合の結果文" } 40 41 alertController.addAction(a) 42 alertController.addAction(b) 43 44 //ここでエラー(Use of unresolved identifier 'c' / 'd')が発生。 45 alertController2.addAction(c) 46 alertController2.addAction(d) 47 48 present(alertController, animated: true, completion: nil) 49 present(alertController2, animated: true, completion: nil) 50 } 51 52}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。