반응형
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.
반응형
'iOS' 카테고리의 다른 글
[iOS] Carthage (0) | 2023.01.12 |
---|---|
[iOS] Crashlytics 적용 (0) | 2023.01.03 |
[iOS] Custom Navigation Controller Pop Gesture Swift (0) | 2022.09.22 |
[iOS] 버튼 이미지가 표시되지 않는 이슈 (0) | 2022.07.11 |
[iOS] WKWebView 정리 Swift (1) | 2022.02.04 |
댓글