Do it! 스위프트로 아이폰 앱 만들기
06장 얼럿 사용해 경고 메시지 표시하기
⇨ 전구가 꺼진 상태에서 켜기를 누르면 전구가 켜지고, 켜진 상태에서 켜기를 누르면 경고 창이 팝업된다.
⇨ 전구가 켜진 상태에서 끄기를 누르면 끌 지 말 지에 대한 경고 창이 팝업된다.
⇨ 제거를 누르면 끌 지, 켤 지, 제거할 지에 대한 경고 창이 팝업된다.
이미지 뷰, 버튼 3개 스토리보드에 배치하기
이미지 뷰는의 Content Mode 는 Aspect Fit로 설정하기
이미지 뷰에 대한 아웃렛 변수 추가하기
버튼 3개에 대한 액션 함수 추가하기
let imgOn = UIImage(named: "lamp-on")
let imgOff = UIImage(named: "lamp-off")
let imgRemove = UIImage(named: "lamp-remove")
var isLampOn = true
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
lampImg.image = imgOn
}
@IBAction func btnLampOn(_ sender: UIButton) {
if isLampOn {
let lampOnAlert = UIAlertController(title: "경고", message: "현재 On 상태입니다", preferredStyle: UIAlertController.Style.alert)
let onAction = UIAlertAction(title: "네, 알겠습니다.", style: UIAlertAction.Style.default, handler: nil)
lampOnAlert.addAction(onAction)
present(lampOnAlert, animated: true, completion: nil)
}
else {
lampImg = imgOn
isLampOn = true
}
}
@IBAction func btnLampOff(_ sender: UIButton) {
if isLampOn {
let lampOffAlert = UIAlertController(title: "램프 끄기", message: "램프를 끄시겠습니까?", preferredStyle: UIAlertController.Style.alert)
let offAction = UIAlertAction(title: "네", style: UIAlertAction.Style.default, handler: { ACTION in self.lampImg.image = self.imgOff
self.isLampOn = false
})
let cancelAction = UIAlertAction(title: "아니오", style: UIAlertAction.Style.default, handler: nil)
lampOffAlert.addAction(offAction)
lampOffAlert.addAction(cancelAction)
present(lampOffAlert, animated: true, completion: nil)
}
}
@IBAction func btnLampRemove(_ sender: UIButton) {
let lampRemoveAlert = UIAlertController(title: "램프 제거", message: "램프를 제거하시겠습니까?", preferredStyle: UIAlertController.Style.alert)
let offAction = UIAlertAction(title: "아니오, 끕니다(off).", style: UIAlertAction.Style.default, handler: { ACTION in self.lampImg.image = self.imgOff; self.isLampOn = false })
let onAction = UIAlertAction(title: "아니오, 켭니다(on).", style: UIAlertAction.Style.default, handler: { ACTION in self.lampImg.image = self.imgOn; self.isLampOn = true })
let removeAction = UIAlertAction(title: "네, 제거합니다.", style: UIAlertAction.Style.destructive, handler: { ACTION in self.lampImg.image = self.imgRemove; self.isLampOn = false })
lampRemoveAlert.addAction(offAction)
lampRemoveAlert.addAction(onAction)
lampRemoveAlert.addAction(removeAction)
present(lampRemoveAlert, animated: true, completion: nil)
}
import UIKit
class ViewController: UIViewController {
let imgOn = UIImage(named: "lamp-on")
let imgOff = UIImage(named: "lamp-off")
let imgRemove = UIImage(named: "lamp-remove")
var isLampOn = true
@IBOutlet var lampImg: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
lampImg.image = imgOn
}
@IBAction func btnLampOn(_ sender: UIButton) {
if isLampOn {
let lampOnAlert = UIAlertController(title: "경고", message: "현재 On 상태입니다", preferredStyle: UIAlertController.Style.alert)
let onAction = UIAlertAction(title: "네, 알겠습니다.", style: UIAlertAction.Style.default, handler: nil)
lampOnAlert.addAction(onAction)
present(lampOnAlert, animated: true, completion: nil)
}
else {
lampImg.image = imgOn
isLampOn = true
}
}
@IBAction func btnLampOff(_ sender: UIButton) {
if isLampOn {
let lampOffAlert = UIAlertController(title: "램프 끄기", message: "램프를 끄시겠습니까?", preferredStyle: UIAlertController.Style.alert)
let offAction = UIAlertAction(title: "네", style: UIAlertAction.Style.default, handler: { ACTION in self.lampImg.image = self.imgOff
self.isLampOn = false
})
let cancelAction = UIAlertAction(title: "아니오", style: UIAlertAction.Style.default, handler: nil)
lampOffAlert.addAction(offAction)
lampOffAlert.addAction(cancelAction)
present(lampOffAlert, animated: true, completion: nil)
}
}
@IBAction func btnLampRemove(_ sender: UIButton) {
let lampRemoveAlert = UIAlertController(title: "램프 제거", message: "램프를 제거하시겠습니까?", preferredStyle: UIAlertController.Style.alert)
let offAction = UIAlertAction(title: "아니오, 끕니다(off).", style: UIAlertAction.Style.default, handler: { ACTION in self.lampImg.image = self.imgOff; self.isLampOn = false })
let onAction = UIAlertAction(title: "아니오, 켭니다(on).", style: UIAlertAction.Style.default, handler: { ACTION in self.lampImg.image = self.imgOn; self.isLampOn = true })
let removeAction = UIAlertAction(title: "네, 제거합니다.", style: UIAlertAction.Style.destructive, handler: { ACTION in self.lampImg.image = self.imgRemove; self.isLampOn = false })
lampRemoveAlert.addAction(offAction)
lampRemoveAlert.addAction(onAction)
lampRemoveAlert.addAction(removeAction)
present(lampRemoveAlert, animated: true, completion: nil)
}
}