if文を使用したUIAlertControllerの実装について
Q&A
Closed
化学を専攻していることがプログラミング初心者です。
UIAlertControllerについての質問なのですが、
結論からお話しすると、3つのTextfieldに指定されている記号が入っているかを確認し、そもそもTextfieldが空であれば、空ということを知らせるアラートを実装する。また、さらにその記号に対応していない場合もアラートを表示する。という二つの点を実装したいです。
そこで、
import UIKit
class ViewController: UIViewController {
let element : [String] = ["Zr", "Cu", "Al", "Fe", "Ag", "Au", "Zn"]
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func gotoSecond() {
if(MetalNameField1.text != "" && MetalNameField2.text != "" && MetalNameField3.text != "") {//空かチェック
if element.contains(MetalNameField1.text!) && element.contains(MetalNameField2.text!) && element.contains(MetalNameField3.text!) { //テキストフィールドに対応できる記号が入っているかチェック
self.performSegue(withIdentifier: "gotoSecond", sender: nil) //画面遷移をするコード
}else{
//対応していない金属の場合
noneAlert()
}
}else{
//フィールドが空のときに呼び出される
karaAlert()
}
func karaAlert(){
let alert: UIAlertController = UIAlertController(title: "エラー", message: "フィールドが空です。", preferredStyle: UIAlertController.Style.alert)
let defaultAction: UIAlertAction = UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler:{
// ボタンが押された時の処理を書く(クロージャ実装)
(action: UIAlertAction!) -> Void in
print("OK")
})
alert.addAction(defaultAction)
// Alertを表示
present(alert, animated: true, completion: nil)
}
func noneAlert(){
let alert: UIAlertController = UIAlertController(title: "エラー", message: "その物質は対応していません。", preferredStyle: UIAlertController.Style.alert)
let defaultAction: UIAlertAction = UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler:{
// ボタンが押された時の処理を書く(クロージャ実装)
(action: UIAlertAction!) -> Void in
print("OK")
})
alert.addAction(defaultAction)
//Alertを表示
present(alert, animated: true, completion: nil)
}
}
のようなコードを書いてみたのですがうまくいきません...
if文の書き方に問題があるのかと思いますが、上手な書き方がわかりません...
初歩的なことではあるかもしれませんがよろしくお願いします。
0