【Xcodeのお勉強】TODOアプリにAlertを実装する

前回作成したTODOアプリ(アプリ初心者仕様)にalert画面を実装する。保存ボタンをタップした時、文字列に何もなければalert画面を表示するというもの。

前回の記事はこちら

【Xcodeお勉強】TO DOアプリを作ってみる(自作編)

alert画面を作るには

alert画面を作るにはUIAlertControllerを使用する必要がある。アラートを表示するためのViewControllerらしい。これもViewControllerってことはもしかしてutility areaにそういうパーツがあるのかなと思ったのだが無かった。

まずはalert画面を生成する

 let alert = UIAlertController(title: nil, message: nil, preferredStyle: .alert)
 alert.title = "テキストを入力してください"
 alert.message = "テキストが空っぽです"

UIAlertControllerクラスのインスタンスを作成する。
第一引数titleと第二引数messageにそれぞれ文字列を用意する。第三引数のpreferredStyle: .alertはダイアログタイプ、大して.actionSheetはアクションシート形式のアラート画面になる。

addAction()メソッドを使用する

UIAlertActionクラスをインスタンス化して、ボタンを作り、addAction()メソッドでダイアログに表示する。addAction()はUIAlertControllerがもっているメソッドである(試しにXcode上のaddAction()をcommandキーを押しながらクリックしてみると詳細が表示される)

//OKボタン
alert.addAction(
	UIAlertAction(
		title: "OK",
		style: .default
	)
)

self.presentを使ってダイアログを表示する

UIAlertControllerはViewControllerであり、UIViewControllerの画面に切り替える時に使用されるメソッドと同じpresentで表示することができる。

//アラートの表示
self.present (
	alert,
	animated: true,
	completion: {
		//表示完了後に実行
		print("アラートが表示された")
	}
)

コードをまとめる


import UIKit

class ViewController: UIViewController {

@IBOutlet weak var input: UITextField!


@IBAction func saveItem(_ sender: Any) {
	if (input.text != "") {
		list.append(input.text!)
		input.text = ""
		self.navigationController?.popViewController(animated: true)
	} else {
		//アラートの作成
		let alert = UIAlertController(title: nil, message: nil, preferredStyle: .alert)
		alert.title = "テキストを入力してください"
		alert.message = "テキストが空っぽです"

		//OKボタン
		alert.addAction(
			UIAlertAction(
				title: "OK",
				style: .default
			)
		)

		//アラートの表示
		self.present (
			alert,
			animated: true,
			completion: {
				//表示完了後に実行
				print("アラートが表示された")
			}
		)
	}

}

override func viewDidLoad() {
	super.viewDidLoad()
	// Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
	super.didReceiveMemoryWarning()
	// Dispose of any resources that can be recreated.
	}
}

完成

やっぱりメソッド・クラス・インスタンスがわからないなぁ。なんかこの関係もうちょっと学習しやすくできないだろうか。。

この記事が気に入ったら
いいね ! しよう