본문 바로가기
iOS, Swift 개발

스위프트(Swift) UIAlertController 구현

by Nin J 2024. 3. 29.

UIAlertController는 사용자에게 메시지, 경고 또는 선택 옵션을 제공할 때 사용됩니다. 주로 다음과 같은 상황에서 구현됩니다:

  1. 사용자 동작에 대한 응답: 사용자가 버튼을 탭하거나 다른 동작을 할 때 발생하는 이벤트에 대한 응답으로 알림을 표시할 때 사용됩니다.
  2. 경고 메시지 표시: 앱이나 기기에서 중요한 정보를 사용자에게 알리고자 할 때 사용됩니다. 예를 들어, 잘못된 입력이나 작업을 시도할 때 사용자에게 경고 메시지를 표시할 수 있습니다.
  3. 사용자 선택 옵션 제공: 사용자에게 선택 옵션을 제공하여 특정 작업을 수행하도록 유도할 때 사용됩니다. 예를 들어, 사용자에게 예/아니오 또는 여러 선택 옵션을 제공할 수 있습니다.

UIAlertController를 사용하여 사용자와의 상호작용을 효과적으로 관리하고 사용자 경험을 향상시킬 수 있습니다.

아래는 Swift로 UIAlertController를 구현하는 간단한 예시입니다.

이 코드는 ViewController에서 버튼을 누르면 UIAlertController를 표시하는 간단한 예시입니다. UIAlertAction을 사용하여 "확인" 버튼을 추가하고, 이를 UIAlertController에 추가합니다. 마지막으로 present 메서드를 사용하여 UIAlertController를 화면에 표시합니다.

UIAlertController를 iPhone 및 iPad에 대해 동일하게 구현할 수 있습니다. UIAlertController는 iPad에서는 팝오버로 표시됩니다. 아래는 iPhone 및 iPad에서 동작하는 UIAlertController를 구현하는 예시 코드입니다.

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBAction func showAlert(_ sender: Any) {
        // UIAlertController 생성
        let alertController = UIAlertController(title: "알림", message: "이것은 UIAlertController 예시입니다.", preferredStyle: .alert)
        
        // UIAlertAction 생성 및 추가
        let okAction = UIAlertAction(title: "확인", style: .default, handler: nil)
        alertController.addAction(okAction)
        
        // iPhone인 경우 모달로 표시
        if UIDevice.current.userInterfaceIdiom == .phone {
            present(alertController, animated: true, completion: nil)
        } else {
            // iPad인 경우 팝오버로 표시
            if let popoverController = alertController.popoverPresentationController {
                popoverController.sourceView = view
                popoverController.sourceRect = CGRect(x: view.bounds.midX, y: view.bounds.midY, width: 0, height: 0)
                popoverController.permittedArrowDirections = []
            }
            present(alertController, animated: true, completion: nil)
        }
    }
}

 

위 코드에서는 UIDevice 클래스를 사용하여 현재 디바이스가 iPhone인지 iPad인지를 확인합니다. iPhone인 경우에는 일반적으로 UIAlertController를 모달로 표시하고, iPad인 경우에는 팝오버로 표시합니다. iPad에서 UIAlertController를 팝오버로 표시하기 위해 popoverPresentationController 속성을 사용하여 팝오버의 소스뷰 및 소스사각형을 설정합니다.

* 별도로 IBAction 은?

IBAction은 Interface Builder와의 상호 작용을 정의하는 Objective-C나 Swift에서 사용되는 특별한 키워드입니다. 이것은 인터페이스 빌더에서 UI 요소(예: 버튼, 슬라이더 등)와 코드를 연결하는 데 사용됩니다.

Swift에서 IBAction은 사용자가 인터페이스 요소를 조작할 때 실행되는 메서드를 나타냅니다. 보통 버튼을 탭하거나 다른 제스처를 수행할 때 실행됩니다. IBAction 메서드는 @IBAction 어노테이션을 사용하여 표시되며, 해당 메서드는 인터페이스 빌더의 액션과 연결됩니다.

예를 들어, 다음은 버튼을 탭할 때 실행되는 IBAction 메서드의 예입니다.

@IBAction func buttonTapped(_ sender: UIButton) {
    // 버튼이 탭될 때 실행될 코드
}

이 메서드는 사용자가 버튼을 탭할 때마다 호출됩니다. 이 메서드 내에서는 버튼 탭에 대한 응답으로 필요한 작업을 수행할 수 있습니다.