iOS

[iOS] Tag을 활용한 UIButton Action 처리

thoonk: 2022. 10. 28. 17:03
반응형

enum과 Tag를 활용하여 UIButton의 Action을 처리하는 방벙을 기록합니다.

이 글은 스토리보드가 아닌 코드 기반으로 설명되어 있습니다.

 

UIButton의 Tag를 기능별로 Enum에 정의합니다.

enum ButtonType: Int {
	case action1 = 1
	case action2 = 2
	case action3 = 3
}

 

위에 정의된 ButtonType으로 해당 UIButton에 맞게 tag를 설정합니다.

또한, 액션을 수행할 메서드를 3개의 버튼 selector 안에 아래와 같이 동일하게 작성합니다.

private lazy var button1: UIButton = {
    let button = UIButton()
    button.setTitle("Button1", for: .normal)
    button.tag = ButtonType.action1.rawValue
    button.addTarget(
        self,
        action: #selector(handleButtonTapped),
        for: .touchUpInside
    )
    
    return button
}()

 

마지막으로, handleButtonTapped 메서드를 정의합니다.

@objc
func handleButtonTapped(_ button: UIButton) {
    if let type = ButtonType(rawValue: button.tag) {
        switch type {
        case .action1:
            print("Button1 Tapped")
        case .action2:
            print("Button2 Tapped")
        case .action3:
            print("Button3 Tapped")
        }
    }
}

 

여러 버튼의 액션을 해당 버튼에 따른 메서드를 정의할 필요 없이 하나의 동일한 메서드에서 분기를 통해 처리할 수 있습니다.

 

부족한 점 피드백해주시면 감사합니다 :)

 

Ref.

https://joeavargas.medium.com/working-with-multiple-uibuttons-and-utilizing-their-sender-tag-property-17f3cced8db8

반응형