๐์ด๋ณด Alert View
๋ฒํผ์ ํด๋ฆญํ์ ๋
Alert View๋ฅผ ๋์ฐ๊ณAlert View์ ์๋ ํ ์คํธํ๋์ ๋ด์ฉ์ผ๋ก ๋ ์ด๋ธ์ ํ ์คํธ๋ฅผ ๋ฐ๊ฟ์ฃผ๋(choose๋ฒํผ์ ํฐ์นํ์ ๋๋ง) ์ฑ๋ฒํผ์ ํฐ์นํ์ ๋
alert ์ฐฝ์ด ๋์ด์ง๋ฏ๋ก ๋ฒํผ๊ณผ ์ฐ๊ฒฐ๋์ด ๋ฒํผ์ ํฐ์น ์ ๋์ํ๋@IBActionํจ์ ์์ ๊ตฌํ ๐Alert ์คํ์ผ : alert๐๋ฒํผ ์ข ๋ฅ
default(choose): ํ ์คํธํ๋์ ๋ด์ฉ์ผ๋ก ๋ ์ด๋ธ์ ํ ์คํธ๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์ ํ์ฉcancel(cancel): ํ ์คํธํ๋์ ๋ด์ฉ์ผ๋ก ๋ ์ด๋ธ์ ํ ์คํธ๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์ ์ทจ์
0. Alert ๋ง๋ค๊ธฐ
์๊ธฐ๊น์ง alert ๋ง๋ค๊ธฐ ์ฑ๊ณต์์ด๋ณด Alert
๐์์ด๋ณด Alert View
๋ฒํผ์ ํฐ์นํ์ ๋
Alert View๊ฐ ๋ํ๋๋ ์ฑ๐Alert ์คํ์ผ : alert
1. button ๋ง๋ค๊ธฐ & @IBAction ์ฐ๊ฒฐ
์ด๊ฑด ์ฝ์ง? ํ ์ ์์ง? ๋ฒํผ ํฐ์น ์ ๋์ํ๋ฏ๋ก ์ดํ์ ์ฝ๋๋ ๋ชจ๋ @IBAction ๋ฉ์๋ ์์์ ์์ฑ๋ ๊ฑฐ์ผ
2. UIAlertController ์์ฑ
let alert = UIAlertController(title: "์ด๊ฑด ๋ฌด์จ ์ฐฝ์ผ๊น์ฉ?", message: "Alert ์ฐฝ ์ ๋๋น", preferredStyle: .alert)๋งค๊ฐ๋ณ์ ์์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ค๋ฉด?
์ธ์คํด์ค ์์ฑ ํ ๊ฐ์ ํ๋์ฉ ๋ฃ์ด์ฃผ๋ฉด ๋จ
but,
preferredStyle์ด ์ฝ๊ธฐ ์ ์ฉ์ด๋ฏ๋ก ํ ๋น ๋ถ๊ฐ๋ฅ โ default ๊ฐ์ผ๋กactionSheet์คํ์ผ๋ก ์ ์ฉ
- ์ ๋ชฉ, ๋ฉ์ธ์ง, alert ์ ํ์ ์ค์
3. Action Button ๋ง๋ค๊ธฐ
let defaultAction = UIAlertAction(title: "ํ์ธ", style: .default) { action in //action }UIAlertAction
๋ต? ๊ฐ์๊ธฐ ํด๋ก์ ธ ๋ฌธ์ด์ฉ??? UIAlertAction์ ์ํ์ ๋ณด์
ํธ๋ค๋ฌ(handler)๊ฐ ์๋ค!!
Alert View๊ฐ ํ๋ฉด์ ๋จ๊ณ ์ฌ์ฉ์๊ฐ ์ด๋ค ๋ฒํผ์ ๋๋ ์ ๋ ์คํํด์ผ ํ ํ๋์ด ์์ ๊ฒ โ ๊ณ ๊ฒ์ ์ค์ ํด์ค์ผ ํจ
์๋ฌด ํ๋๋ ํ์ง ์์ ๊ฒ์ด๋ผ๋ฉด ํด๋ก์ ธ ์์ ์๋ฌด ๊ฒ๋ ์์ฑํ์ง ์์ผ๋ฉด ๋จ (์๋๋ฉด ํธ๋ค๋ฌ ํ๋ผ๋ฏธํฐ์ nil ์ง์ )
- Action Button์ ์ฌ๋ฌ ๊ฐ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ๋ง๋ค๊ณ ์ถ์ ๋งํผ Action Button์ ๋ง๋ฆ โญ๏ธcancel ๋ฒํผ์ ํ๋๋ง ๋ง๋ค ์ ์์
4. ๋ง๋ค์ด์ค Alert ํ์ Action Button ์ฐ๊ฒฐํด์ฃผ๊ธฐ
alert.addAction(defaultAction)
- alert : ์์์ ๋ง๋ค์ด ์ค
UIAlertController๊ฐ์ฒด defaultAction : ์์์ ๋ง๋ค์ด ์คUIAlertAction๊ฐ์ฒด โ ์ด ๋์ ์ฐ๊ฒฐํจ ^ใ ก^- ๋ง๋ Action Button ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด ๋ค ์ฐ๊ฒฐํด์ฃผ์ด์ผ ์ถ๊ฐ๋จ โญ๏ธ์ด ๋, alert์ ์ถ๊ฐํ๋ ์์๋๋ก ํ๋ฉด์ ๋ํ๋๊ฒ ๋จ(alert : ์ผ์ชฝ๋ถํฐ actionSheet : ์์ชฝ๋ถํฐ)โญ๏ธ
5. Alert ํ๋ฉด์ ๋์ฐ๊ธฐ
present(alert, animated: true, completion: nil)Alert๋ View์ธ๋ฐ dismissํด์ค์ผ ํ๋ ๊ฑฐ ์๋๊ฐ์?
์๋์ผ๋ก dismiss๊ฐ ๋์ด์(alert๊ฐ ์์ด์ ธ) ๋ฐ๋ก alert๋ฅผ ์์ ์ฃผ๊ฑฐ๋ ํ ํ์๋ ์์ด์ฉ๐
6. Alert ์์ด๋ณด ํ์ถ
Link to original
1. Alert์ ํ ์คํธํ๋ ์ถ๊ฐํ๊ธฐ
alert.addTextField()์ฌ๊ธฐ์ ์ ๊น addTextField์ ๋ํด ์์๋ณด์
addTextField ์ ์
alert์ ํ ์คํธ ํ๋๋ฅผ ์ถ๊ฐํจ ์ด ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ํธ์ง ๊ฐ๋ฅํ ํ ์คํธํ๋๊ฐ alert์ ์ถ๊ฐ๋จ ์ถ๊ฐ์ ์ธ ํ ์คํธํ๋๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ์ด ๋ฉ์๋๋ฅผ ๋ ๋ฒ ์ด์ ํธ์ถํ ์ ์์ ํ ์คํธํ๋๋ alert ์ฐฝ์ ์คํ์ฒ๋ผ ์์
preferredStyle์ด alert์ธ ๊ฒฝ์ฐ์๋ง ํ ์คํธํ๋๋ฅผ ์ถ๊ฐ ๊ฐ๋ฅ
addTextField ์ํ
ํ๋ผ๋ฏธํฐ๋ก configurationHandler๊ฐ ์กด์ฌํจ
configurationHandler
alert๋ฅผ ํ์ํ๊ธฐ(display) ์ ์ ํ ์คํธํ๋๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํ ๋ธ๋ก ์ด ๋ธ๋ก์ ๋ฐํ ๊ฐ์ด ์์ผ๋ฉฐ, ํ ์คํธํ๋ ๊ฐ์ฒด์ ํด๋นํ๋ ๋จ์ผ ๋งค๊ฐ๋ณ์ ์ฌ์ฉ
๐์์ ๋ฅผ ํตํด ์ฝ๊ฒ ์์๋ณด์ addTextField๋ฅผ ์ถ๊ฐํ๊ณ configurationHandler์ ํ๋ผ๋ฏธํฐ ๋ถ๋ถ์ ์ํฐ๋ฅผ ์น๊ฒ ๋๋ฉด ์ฝ๋๊ฐ ์๋์ ๊ฐ์ด ๋ณ์
์ฌ๊ธฐ์
UITextField๊ฐ ์์์ ๋งํ ๋งค๊ฐ๋ณ์, ์ด ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ํ ์คํธํ๋ ์์ฑ์ ๋ณ๊ฒฝํ ์ ์์์ ์ฝ๋๋ ํ ์คํธํ๋์ ํ ์คํธ ์ปฌ๋ฌ๋ฅผ
cyan์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ ์ฝ๋์ ๋์ํ์ง์ฉ?
์๋ ์ฝ๋กฌ ํ ์คํธํ๋์ ์์ฑ๋ค์ ๋ง๊ตฌ๋ง๊ตฌ ์ค์ ํด์ค ์ ์์ต๋๋น
2. Label ๋ง๋ค๊ธฐ & @IBOutlet ์ฐ๊ฒฐ
์ด๊ฑด ์ฝ์์ ์ ์ ์ด๋ ํ ์ ์์์
3. choose ๋ฒํผ์ handler์์ Label์ ํ
์คํธ๋ฅผ TextField์ ํ
์คํธ๋ก ๋ฐ๊ฟ์ฃผ๊ธฐ
let choose = UIAlertAction(title: "choose", style: .default) { action in
self.mainLabel.text = alert.textFields?[0].text
}- UIAlertController(alert)์
textFields๋ผ๋ ํ๋กํผํฐ ์กด์ฌํด์ ํ ์คํธํ๋์ ์ ๊ทผ ๊ฐ๋ฅ - textFields๋ผ๋ ํ๋กํผํฐ๋ ๋ฐฐ์ด
- ์ฌ๋ฌ ๊ฐ์ ํ ์คํธํ๋ ์ถ๊ฐํ์ ์ ๊ฐ๊ฐ์ ํ ์คํธํ๋์ ๋ค ์ ๊ทผํ ์ ์์
- ์๊น
ํ ์คํธํ๋๋ alert ์ฐฝ์ ์คํ์ฒ๋ผ ์์์ด๋ผ๊ณ ํ์ผ๋๊น ์์์๋ถํฐ ์ฒซ๋ฒ์งธ ํ ์คํธํ๋๋ [0], ๋๋ฒ์งธ ํ ์คํธํ๋๋ [1], โฆ ์ด๋ฐ ์
4. Alert ์ด๋ณด ํ์ถ

ํธ๋ค๋ฌ(handler)๊ฐ ์๋ค!!

์ฌ๊ธฐ์
์ ์ฝ๋๋ ํ
์คํธํ๋์ ํ
์คํธ ์ปฌ๋ฌ๋ฅผ
์ ๋์ํ์ง์ฉ?