1. ホーム
  2. ios

[解決済み] SwiftでUIAlertViewを作成するにはどうしたらいいですか?

2022-03-18 21:51:21

質問

SwiftでUIAlertViewを作る作業をしているのですが、なぜかこのエラーが出てしまい、うまく文が書けません。

init'のオーバーロードが見つからず、提供された 引数

こんな風に書いています。

let button2Alert: UIAlertView = UIAlertView(title: "Title", message: "message",
                     delegate: self, cancelButtonTitle: "OK", otherButtonTitles: nil)

それから、それを呼び出すために、私は

button2Alert.show()

今現在、クラッシュしてしまい、構文を正しく理解することができないようです。

解決方法は?

からの UIAlertView クラスがあります。

// UIAlertViewは非推奨です。使用方法 UIAlertController で preferredStyle が UIAlertControllerStyleAlert になっている。

iOS 8では、このようにすることができます。

let alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Click", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)

現在 UIAlertController として知っていたものを作成し、相互作用させるための単一のクラスです。 UIAlertViewUIActionSheet をiOS 8で使用することができます。

編集する アクションを処理するため。

alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: { action in
    switch action.style{
    case .Default:
        print("default")
        
    case .Cancel:
        print("cancel")
        
    case .Destructive:
        print("destructive")
    }
}}))

Swift 3用に編集します。

let alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "Click", style: UIAlertActionStyle.default, handler: nil))
self.present(alert, animated: true, completion: nil)

Swift 4.x用に編集しています。

let alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { action in
    switch action.style{
        case .default:
        print("default")
        
        case .cancel:
        print("cancel")
        
        case .destructive:
        print("destructive")
        
    }
}))
self.present(alert, animated: true, completion: nil)