.bind(to:)
.bind(to:)
bind
는 RxSwift에서 옵저버블(Observable)의 결과를 특정 대상에 연결할 때 사용하는 메서드.
bind
의 특징:
- UI 업데이트에 자주 사용됨 → 예:
UILabel.text
,UIButton.isEnabled
- Main Thread에서 실행됨 → UI 업데이트를 안전하게 처리 가능
- 수동 구독 불필요 →
subscribe(onNext:)
없이 자동으로 값을 바인딩 - 메모리 관리 자동화 →
disposed(by:)
로 해제 가능
예제 코드
textRelay
에서 값이 방출됨.label.rx.text
랑 연결
1
2
3
4
5
let textRelay = BehaviorRelay<String>(value: "Hello")
textRelay
.bind(to: label.rx.text) // label의 text 속성에 값 연결
.disposed(by: disposeBag)
numberRelay
에서 값이 방출됨.- bind로 값을 받아서
value
로 읽음.
1
2
3
4
5
6
7
8
let numberRelay = BehaviorRelay<Int>(0)
numberRelay
.bind { value in
print("현재 값: \(value)")
}
.disposed(by: disposeBag)
- 다른 옵져버블과 연결
- UIView에서 발생한 이벤트와 바이딩할때는 이벤트를 인지하는 옵셔버블(
logoutButtonTapped
)의 타입도Void
여야 함.
- UIView에서 발생한 이벤트와 바이딩할때는 이벤트를 인지하는 옵셔버블(
1
2
3
logoutButton.rx.tap
.bind(to: settingViewModel.logoutButtonTapped)
.disposed(by: disposeBag)
1
2
3
4
5
6
7
8
9
class SettingViewModel {
//...
let logoutButtonTapped = PublishRelay<Void>()
init() {
//...
}
}
This post is licensed under CC BY 4.0 by the author.