티스토리 뷰

Mobile/ios

[ios] ios 5: Alert

춘햄 2022. 12. 13. 19:13

Alert는 화면에 경고 메시지를 표시하는 기능이다. 단순히 경고 메시지를 나타낸 후 확인만 하게 할 수도 있지만, 경고 메시지와 함께 두 가지 이상의 선택을 요구할 수도 있고 선택에 따라 특정 작업도 수행할 수 있다.

 

간단한 전구 예제를 작성해보면서 익혀보자.


우선, 마찬가지로 스토리보드부터 작성 후에 각 객체를 @IBOutlet 변수와 @IBAction 메서드에 연결해주자.

만들려는 예제가 전구 켜기, 끄기, 제거 버튼에 따라 경고 메시지를 띄운 뒤 이미지를 제어하는 예제이기 때문에 각 버튼 마다 액션 함수를 생성했다.

 

//
//  ViewController.swift
//  example_project5
//
//  Created by choonham on 2022/12/13.
//

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
    
    @IBOutlet var imageView: UIImageView!
    @IBOutlet var turnOnBtn: UIButton!
    @IBOutlet var turnOffBtn: UIButton!
    @IBOutlet var deleteBtn: UIButton!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        imageView.image = imgOn
    }
    
    @IBAction func turnOn(_ sender: UIButton) {
        if(isLampOn) {
           
        } else {
  
        }
    }
    
    
    @IBAction func turnOff(_ sender: UIButton) {
        if isLampOn {
           
        }
    }
    

    @IBAction func remove(_ sender: UIButton) {
        
    }
    
}

Alert 창을 생성하는 순서는 아래와 같다.

 

 1) AlertController 생성 

 2) AlertAction 생성

 3) AlertController 인스턴스 객체에 AlertAction 인스턴스 추가

 4) present 함수에 해당 AlertController 객체를 추가하여 화면에 띄우기

 

코드는 아래와 같이 작성한다.

//
//  ViewController.swift
//  example_project5
//
//  Created by choonham on 2022/12/13.
//

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
    
    @IBOutlet var imageView: UIImageView!
    @IBOutlet var turnOnBtn: UIButton!
    @IBOutlet var turnOffBtn: UIButton!
    @IBOutlet var deleteBtn: UIButton!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        imageView.image = imgOn
    }
    
    @IBAction func turnOn(_ sender: UIButton) {
        if(isLampOn) {
            let lampOnAlert = UIAlertController(title: "경고", message: "현재 전구가 켜져있습니다.", preferredStyle: UIAlertController.Style.alert)
            let onAction = UIAlertAction(title: "네, 알겠습니다.",
                style: UIAlertAction.Style.default, handler: nil)
            lampOnAlert.addAction(onAction)
            present(lampOnAlert, animated: true, completion: nil)
        } else {
            imageView.image = imgOn
            isLampOn = true
        }
    }
    
    
    @IBAction func turnOff(_ 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.imageView.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 remove(_ sender: UIButton) {
        let lampRemoveAlert = UIAlertController(title: "전구 제거", message: "전구를 제거하시겠습니까?", preferredStyle: UIAlertController.Style.alert)
        
        let offAction = UIAlertAction(title: "아니오, 끕니다.", style: UIAlertAction.Style.default, handler: {
            ACTION in
            self.imageView.image = self.imgOff
            self.isLampOn = false
        })
        
        let onAction = UIAlertAction(title: "아니오, 켭니다.", style: UIAlertAction.Style.default, handler: {
            ACTION in
            self.imageView.image = self.imgOn
            self.isLampOn = true
        })
        
        let removeAction = UIAlertAction(title: "네, 제거합니다.", style: UIAlertAction.Style.default, handler: {
            ACTION in
            self.imageView.image = self.imgRemove
            self.isLampOn = false
        })
        
        lampRemoveAlert.addAction(offAction)
        lampRemoveAlert.addAction(onAction)
        lampRemoveAlert.addAction(removeAction)
        
        present(lampRemoveAlert, animated: true, completion: nil)
        
    }
    
}

끝!

'Mobile > ios' 카테고리의 다른 글

[ios] ios 7: MapView  (0) 2022.12.15
[ios] ios 6: webView  (0) 2022.12.15
[ios] ios 4: Picker View  (0) 2022.12.13
[ios] ios 3: DatePicker & Timer  (0) 2022.12.13
[ios] ios 2: ImageView  (0) 2022.12.12
Comments