UIButton에서 currentTitle과 titleLabel?.text의 차이점
currentTitle
- 정의: currentTitle은 UIButton의 현재 상태(일반, 선택됨, 강조됨 등)에 따라 설정된 타이틀을 반환합니다.
- 사용 용도: 버튼의 상태에 따라 다르게 설정된 타이틀을 얻을 때 유용합니다.
- 자동 상태 처리: 버튼의 상태(예: normal, highlighted, selected, disabled)에 따라 적절한 타이틀을 자동으로 반환합니다.
- 간결성: 상태에 맞는 타이틀을 바로 가져올 수 있어 코드가 간결해집니다.
guard let clickedButtonText = sender.currentTitle else { return }
titleLabel?.text
- 정의: titleLabel은 UIButton 내부에 있는 UILabel입니다. titleLabel?.text는 이 UILabel의 텍스트를 반환합니다.
- 사용 용도: 버튼의 특정 상태와 무관하게 UILabel에 설정된 텍스트를 직접 가져오거나 설정할 때 유용합니다.
- 직접 접근: 버튼의 UILabel에 직접 접근하여 텍스트를 설정하거나 가져오는 방식입니다. UIButton의 상태와 관계없이 항상 UILabel의 텍스트를 반환합니다.
- 정밀 제어: UILabel 자체에 대한 더 많은 제어가 필요할 때 사용됩니다.
guard let clickedButtonText = sender.titleLabel?.text else { return }
주요 차이점
- 상태 의존성:
- currentTitle는 UIButton의 현재 상태에 맞는 타이틀을 반환합니다. 버튼의 상태에 따라 다르게 설정된 타이틀을 자동으로 관리합니다.
- titleLabel?.text는 버튼의 상태와 관계없이 UILabel의 텍스트를 반환합니다. 상태에 따른 타이틀 관리 기능이 없습니다.
- 코드 간결성 및 사용 편의성:
- currentTitle는 상태에 맞는 타이틀을 바로 가져올 수 있어 코드가 간결합니다.
- titleLabel?.text는 UILabel에 직접 접근하여 텍스트를 가져오기 때문에 좀 더 복잡할 수 있습니다.
- 상태별 타이틀 설정 여부:
- currentTitle는 버튼의 상태별로 타이틀을 설정할 수 있는 경우에 사용됩니다. 예를 들어, setTitle(_:for:) 메서드를 사용하여 상태별로 타이틀을 설정할 수 있습니다.
- titleLabel?.text는 UILabel의 텍스트를 직접 설정하거나 가져오는 것이므로 상태별 타이틀을 설정할 때는 추가 로직이 필요할 수 있습니다.
예제 코드
currentTitle 사용 예제:
button.setTitle("0", for: .normal)
button.setTitle("Pressed", for: .highlighted)
button.setTitle("Selected", for: .selected)
@IBAction func numButton(_ sender: UIButton) {
guard let clickedButtonText = sender.currentTitle else { return }
print("Clicked button title: \(clickedButtonText)")
}
titleLabel?.text 사용 예제:
button.titleLabel?.text = "0"
@IBAction func numButton(_ sender: UIButton) {
guard let clickedButtonText = sender.titleLabel?.text else { return }
print("Clicked button title: \(clickedButtonText)")
}
결론
- currentTitle는 버튼의 상태에 따라 적절한 타이틀을 자동으로 반환하므로, 상태별 타이틀 관리가 필요한 경우에 더 유용하고 간편합니다.
- titleLabel?.text는 UIButton의 UILabel에 직접 접근하여 텍스트를 가져오거나 설정할 수 있으므로, 상태와 무관하게 UILabel의 텍스트를 직접 제어해야 할 때 유용합니다.
반응형
'TIL (Today I Learned)' 카테고리의 다른 글
[TIL] 2024. 07. 02 (0) | 2024.07.03 |
---|---|
[TIL] 2024. 07. 01 (0) | 2024.07.01 |
[TIL] 2024. 06. 27 (0) | 2024.06.27 |
[TIL] 2024. 06. 26 (0) | 2024.06.26 |
[TIL] 2024. 06. 25 (0) | 2024.06.25 |