[IOS] Do it(5) 전구를 만들어보자(Alert App) 구현 예제!

728x90

Alert App 입니다.

전구를 컨트롤 할 수 있으며 

  • 켜기
  • 끄기
  • 제거하기(켜기or끄기or제거) 

의 기능이 있습니다.

구현 모습

 

코드 리뷰

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
    
    //OutLet변수 : 객체의 값을 이용 및 속성을 제어할 경우 아웃렛 변수
    @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==true) {
            //UIAlertController 생성
            let lampOnAlert = UIAlertController(title: "경고", message: "현재 On 상태입니다.", preferredStyle: UIAlertController.Style.alert)
            //UIAlertAction 생성 , 특별한 동작하지 않으면 handler : nil
            let onAction = UIAlertAction(title: "네, 알겠습니다.", style: UIAlertAction.Style.default, handler: nil)
            //생성된 onAction을 얼럿에 추가
            lampOnAlert.addAction(onAction)
            //present 메서드 실행
            present(lampOnAlert, animated: true, completion: nil)
            
            
        }else{
            lampImg.image = imgOn
            isLampOn=true
        }
    }
    @IBAction func btnLampOff(_ sender: UIButton) {
        if (isLampOn==true) {
            // UIAlertController생성
            let lampOffAlert = UIAlertController(title: "램프 끄기", message: "램프를 끄시겠습니까?",preferredStyle: UIAlertController.Style.alert)
            
            //UIAlertAction생성 , 전구꺼야 하므로 핸들러에 {} 넣어 추가 작업 , self붙어야 에러 발생안함
            let offAction = UIAlertAction(title: "네", style: UIAlertAction.Style.default, handler: {ACTION in self.lampImg.image = self.imgOff
                self.isLampOn=false
            })
            
            //UIAlertAction을 추가로 생성 , 특별한 동작없는경우 핸들러nil
            let cancelAction = UIAlertAction(title: "아니오", style: UIAlertAction.Style.default, handler: nil)
            
            //생성된 offAction, cancelAction을 얼럿에 추가
            lampOffAlert.addAction(offAction)
            lampOffAlert.addAction(cancelAction)
            
            //present 메서드 실행
            present(lampOffAlert, animated: true, completion: nil)
        }
    }
    
    @IBAction func btnLampRemove(_ sender: UIButton) {
        //UIAlertController를 생성
        let lampRemoveAlert = UIAlertController(title: "램프제거", message: "램프를 제거하시겠습니까?", preferredStyle: UIAlertController.Style.alert)
        
        //UIAlertAction을 생성, 전구를 꺼야하므로 handler 추가 작업
        let offAction = UIAlertAction(title: "아니오 끕니다(off)", style: UIAlertAction.Style.default, handler: {
            ACTION in self.lampImg.image = self.imgOff
            self.isLampOn=false
        })
    
        //UIAlertAction 생성 전구 켜는 동작 추가 , 핸들러 추가작업 (위와 다른 방법 같은 결과)
        let onAction = UIAlertAction(title: "아니오, 켭니다(on).", style: UIAlertAction.Style.default){
            ACTION in self.lampImg.image = self.imgOn
            self.isLampOn=true
        }
        
        //UIAlertAction 추가로 생성한 후 전구 제거하는 동작 추가
        let removeAction = UIAlertAction(title: "네, 제거합니다.", style: UIAlertAction.Style.destructive, handler: {
            ACTION in self.lampImg.image = self.imgRemove
            self.isLampOn=false
        })
        
        //생성된 offAction onAction, RemoveAction 얼럿에 추가
        lampRemoveAlert.addAction(offAction)
        lampRemoveAlert.addAction(onAction)
        lampRemoveAlert.addAction(removeAction)
        
        //present 메서드 실행
        present(lampRemoveAlert, animated: true, completion: nil)
        
        
        
    }
}

전체 코드

Alert.zip
0.90MB

728x90

댓글

Designed by JB FACTORY