[TIL] 2024. 06. 28

2024. 6. 28. 14:04·TIL (Today I Learned)

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 }

주요 차이점

  1. 상태 의존성:
    • currentTitle는 UIButton의 현재 상태에 맞는 타이틀을 반환합니다. 버튼의 상태에 따라 다르게 설정된 타이틀을 자동으로 관리합니다.
    • titleLabel?.text는 버튼의 상태와 관계없이 UILabel의 텍스트를 반환합니다. 상태에 따른 타이틀 관리 기능이 없습니다.
  2. 코드 간결성 및 사용 편의성:
    • currentTitle는 상태에 맞는 타이틀을 바로 가져올 수 있어 코드가 간결합니다.
    • titleLabel?.text는 UILabel에 직접 접근하여 텍스트를 가져오기 때문에 좀 더 복잡할 수 있습니다.
  3. 상태별 타이틀 설정 여부:
    • 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
'TIL (Today I Learned)' 카테고리의 다른 글
  • [TIL] 2024. 07. 02
  • [TIL] 2024. 07. 01
  • [TIL] 2024. 06. 27
  • [TIL] 2024. 06. 26
DongDong_
DongDong_
  • DongDong_
    how-dev
    DongDong_
  • 전체
    오늘
    어제
    • 분류 전체보기 (102)
      • TIL (Today I Learned) (96)
      • DEV (0)
        • 알고리즘 (0)
        • SWIFT (0)
      • 사전캠프 데일리 미션 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글작성
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
DongDong_
[TIL] 2024. 06. 28
상단으로

티스토리툴바