質問: いつもお世話になっております。 今回の質問は、 ・UIButtonからActionSheetを表示 ・ActionSheetの選択肢の内の一つを選択 ・Alertを表示 ・画面遷移 という展開が可能か?ということです。 ネット上にある情報では、 UIButton → ActionSheet UIButton → Alert というサンプルコードは見つかるんですが、今回の質問のような複雑なものが見つかりません。 是非、ご教授下さい。
回答: addTargetはUIButtonでイベントが発生した時に実行するインスタンスとメソッドを登録する為のもので、ActionSheetのAlertActionの中で実行しても、そこでaddTargetしたものが実行されるわけではありません。おそらく再度ボタンをタップすると、ActionSheetの表示とaddTargetしたメソッドが同時に実行されるのではないでしょうか。 以下のように記述するとご希望の動作になると思います。 ``` @IBAction func showActionSheet(sender: UIButton) { let actionController = UIAlertController(title: "sheet", message: "please select", preferredStyle: .ActionSheet) actionController.addAction(UIAlertAction(title: "first", style: .Default, handler: { [unowned self] (action: UIAlertAction) -> Void in let alertController = UIAlertController(title: sender.currentTitle, message: nil, preferredStyle: .Alert) alertController.addAction(UIAlertAction(title: "transition", style: .Default, handler: { (transitionAction: UIAlertAction) -> Void in print("transition") })) self.presentViewController(alertController, animated: true, completion: nil) })) presentViewController(actionController, animated: true, completion: nil) } ``` ActionSheetのUIAlertAction内でUIButtonであるsenderを参照してタイトルを取得し、それをAlertのタイトルに設定しています。 addTargetなどの基本的な事柄をご理解されていないようなのでその点学習されると良いと思います。