//
// ViewController.swift
// Alert
//
// Created by Hamlit Jason on 2021/02/21.
//
import UIKit
class ViewController: UIViewController {
let imgOn = UIImage(named: "lamp-on.png")
let imgOff = UIImage(named: "lamp-off.png")
let imgRemove = UIImage(named: "lamp-Remove.png")
var isLampOn = true
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
lambImg.image = imgOn
}
@IBOutlet var lambImg: UIImageView!
@IBAction func lambOn(_ sender: UIButton) {
if (isLampOn == true) {
let lampOnAlert = UIAlertController(title: "경고", message: "현재 on 상태입니다.", preferredStyle: .alert)
let onAction = UIAlertAction(title: "네 알겠습니다.", style: UIAlertAction.Style.default, handler: nil)
lampOnAlert.addAction(onAction)
present(lampOnAlert, animated: true, completion: nil)
} else {
lambImg.image = imgOn
isLampOn = true
}
}
@IBAction func lambOff(_ sender: UIButton) {
if (isLampOn == true) {
let lampOnAlert = UIAlertController(title: "램프 끄기", message: "전구를 끄시겠습니까?", preferredStyle: .alert)
let offAction = UIAlertAction(title: "네 알겠습니다.", style: UIAlertAction.Style.default, handler : { ACTION in
self.lambImg.image = self.imgOff
self.isLampOn = false
})
let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertAction.Style.cancel, handler: nil)
lampOnAlert.addAction(offAction)
lampOnAlert.addAction(cancelAction)
present(lampOnAlert, animated: true, completion: nil)
} else {
let lampOffAlert = UIAlertController(title: "경고", message: "현재 off 상태입니다.", preferredStyle: .alert)
let offAction = UIAlertAction(title: "네 알겠습니다.", style: UIAlertAction.Style.default, handler: nil)
lampOffAlert.addAction(offAction)
present(lampOffAlert, animated: true, completion: nil)
}
}
@IBAction func LampRemove(_ sender: UIButton) {
let lampRemoveAlert = UIAlertController(title: "경고", message: "램프를 정말 제거하시겠습니까?.", preferredStyle: .alert)
let onAction = UIAlertAction(title: "킬래요.", style: UIAlertAction.Style.default, handler: { (UIAlertAction) in
self.lambImg.image = self.imgOn
self.isLampOn = true
})
let offAction = UIAlertAction(title: "끌래요.", style: UIAlertAction.Style.default, handler: { (UIAlertAction) in
self.lambImg.image = self.imgOff
self.isLampOn = false
})
let RemoveAction = UIAlertAction(title: "삭제할래요.", style: UIAlertAction.Style.default, handler: { (UIAlertAction) in
self.lambImg.image = self.imgRemove
self.isLampOn = false
})
lampRemoveAlert.addAction(onAction)
lampRemoveAlert.addAction(offAction)
lampRemoveAlert.addAction(RemoveAction)
present(lampRemoveAlert, animated: true, completion: nil)
}
}
alert 사용법은
1. UIAlertController 선언
2. UIAlertAction 선언
3. addAction 통해서 추가
4. present 를 통해서 alert를 보여준다 ( dismiss는 구현할 필요가 없는데, 그 이유는 창이 닫힐때 자동으로 닫히기 때문에 )
파라미터에 대한 간략한 이해
UIAlertController - preferredStyle에서
.action 과 .alert의 차이는
후자는 모달 방식으로 화면에 표시되서 그 창이 닫힐 때 까지 다른 반응을 할 수 없도록 잠기는 것
전자는 다른 영역을 건드릴 수 있으며, 그 결과로 시트창이 닫힙니다.
UIAlertAction - style에서
.destructive - 주의해서 선택해야 할 버튼에 주로 사용하며, 중요한 정보 삭제나 돌이킬 수 없는 중요한 내용을 변경하거나 삭제해서 되돌릴 수 버튼의 경우 빨간색 글자로 표시된다.
.cancel - 아무것도 지정하지 않은 채 창의 액션이 취소된다는 것이며, 메시지 창 내에서는 한번만 사용할 수 있다.
.default - 일반적인 버튼이 이 값으로 설정한다.
UIAlertAction - handler의 역할은
버튼을 클릭했을 때 실행될 구문이다.
딱히 기능이 없으면 nil 로 설정하면 된다.
'Archive > Doit 아이폰 앱(입문)' 카테고리의 다른 글
Map - 코드리뷰(맵뷰) (0) | 2021.03.02 |
---|---|
Web - 코드리뷰(웹뷰) (0) | 2021.03.02 |
PickerView - 코드리뷰 (0) | 2021.03.02 |
DatePicker - 코드리뷰 (타이머) (0) | 2021.03.02 |
ImageView - 코드리뷰 (0) | 2021.03.02 |