22580


いつもお世話になっております。  
今回の質問は、

・UIButtonからActionSheetを表示  
・ActionSheetの選択肢の内の一つを選択  
・Alertを表示  
・画面遷移

という展開が可能か？ということです。

ネット上にある情報では、  
UIButton → ActionSheet  
UIButton → Alert  
というサンプルコードは見つかるんですが、今回の質問のような複雑なものが見つかりません。

是非、ご教授下さい。


CC BY-SA 3.0
2016-02-26T13:05:55.177
22572
2016-02-26T22:29:30.210
13156
question
swift
ActionSheetの選択肢の内の一つからAlertへ遷移することはできますか？


addTargetはUIButtonでイベントが発生した時に実行するインスタンスとメソッドを登録する為のもので、ActionSheetのAlertActionの中で実行しても、そこでaddTargetしたものが実行されるわけではありません。おそらく再度ボタンをタップすると、ActionSheetの表示とaddTargetしたメソッドが同時に実行されるのではないでしょうか。

以下のように記述するとご希望の動作になると思います。

[code]

    @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)
    }
    
[/code]

ActionSheetのUIAlertAction内でUIButtonであるsenderを参照してタイトルを取得し、それをAlertのタイトルに設定しています。  
addTargetなどの基本的な事柄をご理解されていないようなのでその点学習されると良いと思います。


CC BY-SA 3.0
2016-02-26T22:29:30.210
22580
2016-02-26T22:29:30.210
238
22572
answer