Swift

Swift - UIAlertController (경고, 알림 등 팝업 창 표시)

iosos 2023. 7. 1. 18:50

* UIAlertController

- iOS 애플리케이션에서 경고, 알림 등의 팝업 창을 표시하는 UI 컴포넌트

- 사용자에게 미시지를 전달하거나 사용자의 선택을 받을 때 주로 사용 

 

 

 

1. 경고(alert) 스타일

- 사용자에게 경고, 오류, 주의사항 등을 알리는 데 사용

- 주로 단순한 OK 버튼이 제공되며, 사용자가 알림을 확인하는 용도로 사용

- 중단에 표시됨 

 

 

 

2. 액션시트(action sheet) 스타일 

- 사용자에게 선택지를 제공하고 사용자의 선택을 받을 때 사용 

- 주로 여러 버튼을 포함하고, 각 버튼은 다른 동작을 수행하도록 설정 

- 선택 옵션을 제공하기 위해 하단에 표시됨

 

 

 

* UIAlertController 구성 요소

- 제목(title) : 팝업 창의 제목을 나타냄. 주로 경고(alert) 스타일에서 사용

- 메시지(message) : 팝업 창의 본문 메시지를 나타냄. 사용자에게 전달할 내용 포함 

- 액션(action) : 사용자가 선택할 수 있는 동작을 나타냄. 주로 버튼 형태로 표시되며, 각 버튼에 특정한 액션 연결 가능 

 

 

 


 

사용 방법

 

1. 스토리보드에 버튼 추가 

- bgColorBlue 버튼은 alert 스타일 사용

- ActionSheet 버튼은 actionSheet 방식 사용

 

 

 

2.  alert 스타일 

    // blue 버튼 action
    @IBAction func blueButton(_ sender: Any) {
        
        // alert 스타일 사용
        let alert = UIAlertController(title: "배경화면 색 전환", message: "버튼 색으로 배경을 바꾸시겠습니까?", preferredStyle: .alert)
        
        let okAction = UIAlertAction(title: "OK", style: .default){action in
            self.view.backgroundColor = UIColor.blue
            
        }
        alert.addAction(okAction)
        
        
        self.present(alert, animated: true, completion: nil)
        
    }

- 'blueButton' 클릭 시 알림 창을 표시하고 "OK" 버튼을 누르면 뷰의 배경색이 파란색으로 변경됨 

- 'preferredStyle' 를 .alert로 사용

- 'UIAlertAction' 을 사용하여 버튼 객체를 만들고 버튼의 액션 클로저에서 배경색 변경

- 'UIAlertController'의 인스턴스에 'UIAlertAction' 버튼을 추가 

- 'present(_ : animated: completion:)' 메서드를 사용하여 UIAlertController 표시 

 

 

 

 

 

 

 

 

3. actionSheet 스타일 

    // actionSheet 스타일
    @IBAction func actionSheetButton(_ sender: UIButton) {
        
        // actionSheet 스타일 사용
        let alert = UIAlertController(title: "배경화면 색 전환", message: "버튼 색으로 배경을 바꾸시겠습니까?", preferredStyle: .actionSheet)
        
        
        // 각각의 버튼 객체 생성 후 액션 클로저에 동작 구현 
        let green = UIAlertAction(title: "green", style: .default){ action in
            self.view.backgroundColor = UIColor.green
        }
        
        let white = UIAlertAction(title: "white", style: .default){ action in
            self.view.backgroundColor = UIColor.white
        }
        
        let red = UIAlertAction(title: "red", style: .default){ action in
            self.view.backgroundColor = UIColor.red
        }
        
        
        // UIAlertController에 각 버튼 추가 
        alert.addAction(green)
        alert.addAction(white)
        alert.addAction(red)
        
        // UIAlertController를 표시
        self.present(alert, animated: true, completion: nil)
        
    }

- 'actionSheetButton'을 클릭하면 액션 시트가 표시되고, 각각의 버튼을 누르면 뷰의 배경색이 해당 색으로 변경되는 동작 수행

- 'UIAlertController'의 인스턴스를 생성하여 'preferredStyle' 을 actionSheet로 사용 

- 'UIAlertAction'을 사용하여 각각의 버튼 객체를 만들고 버튼의 액션 클로저에서 배경색 변경 동작 구현

- 'UIAlertController'에 각 버튼 추가 

- 'present(_ : animated: completion:)' 메서드를 사용하여 UIAlertController 표시