✔︎ 오늘의 정리
- RxSwift
- 무슨 짓을 해도 bind한 버튼이 눌리지 않을 때
- swipe로 셀 삭제하기
- trait
RxSwift
무슨 짓을 해도 bind한 버튼이 눌리지 않을 때
지금껏 왠지는 모르겠지만 셀 내에서 addSubView를 할 때 self.addSubView를 쓰고 있었다.
늘 써오던대로 썼는데 RxSwift에서 버튼을 tap 했을 때의 함수가... ... 무슨 짓을 해도 안 먹는 게 아닌가?!
list
.bind(to: tableView.rx.items(cellIdentifier: ShoppingTableViewCell.identifier, cellType: ShoppingTableViewCell.self)) { row, element, cell in
cell.stuff = element
cell.configurateCell()
cell.checkboxButton.rx.tap
.subscribe(with: self, onNext: { owner, void in
owner.data.list[row].checked.toggle()
owner.list.onNext(owner.data.list)
})
.disposed(by: cell.disposeBag)
cell.starButton.rx.tap
.subscribe(with: self, onNext: { owner, void in
owner.data.list[row].liked.toggle()
owner.list.onNext(owner.data.list)
})
.disposed(by: cell.disposeBag)
}
.disposed(by: disposeBag)
안 먹은 코드는 다음과 같다.
breakPoint를 찍어도 보고 print문을 넣어도 봤는데 bind문이 아예 안 타는 게 아닌가?!
이게 대체 ,, 뭔가 싶었다 ㅠ,ㅠ
근데 놀랍게도 hierarchy를 찍어보니 버튼이 왜 안 눌리는지 알겠드라.
self.addSubView를 할 때는 위와 같이 계층구조 제일 위에 투명한 뷰가 하나 막고 있다.
저게 뭔가? 했더니 바로바로~ contentView인 것이다 ,, ^__^
대박~~!!!!!!
나는 contentView 아래에 객체를 차곡차곡 쌓고 있던 것이다.
contentView.addSubView를 해 준 코드는 아래와 같다....
^____^
위에 있던 막이 사라졌다.
내 하루를 날린 게 이런? 이유? 때문이었다니?
참나 .. ..
Swipe로 셀 삭제하기
tableView.rx.itemDeleted
.subscribe(with: self, onNext: { owner, indexPath in
let row = indexPath.row
owner.data.list.remove(at: row)
owner.list.onNext(owner.data.list)
})
.disposed(by: disposeBag)
trait
- Trait
- 구분해서 쓰지는 않지만 RxSwift에서 만드는 UI에 특화된 요소들
- trait을 제공하고 있는데 RxSwift에서 제공하고 있는 trait이 따로 있고 RxCocoa에서 제공하는 trait이 있는 거잉
- 각각 다양한 객체들을 많이 나눠 놓음
- 나중에 Rx정리할 때 trait이 뭔지! 에 대해서 확실히 알면 좋을듯 :3
- 이 친구들은 한 단계 더 편하게 사용하기 위해서 나온 거임
- RxSwift
- Single
- Completable
- Maybe
- RxCocoa
- Error Evenet X / MainThread에서의 동작 보장함!
- Driver
- share 기능이 내장되어 있는 객체!
- String 공유 / MainThread에서의 동작을 보장해줌
- Signal
- ControlProperty
- ControlEvent
ㅠ,ㅠ 하 우짜냐 더는 뭔가를 넣으려고 하다가 계쏙 못 올릴 거 가타서 일단 ... 올린다.
TIL 쓰고 왜케 바로 올리는 게 힘든지?!
근야 조금이라도 올려야 하는데 ㄱ- 그게 참 힘들다
조만간 Rx 꼭 정리할 것.
'TIL' 카테고리의 다른 글
[SeSAC] November 13 , 2023 (0) | 2023.11.14 |
---|---|
[SeSAC] November 10, 2023 (0) | 2023.11.10 |
[SeSAC] November 1, 2023 (2) | 2023.11.01 |
[SeSAC] October 24, 2023 (5) | 2023.10.24 |
[SeSAC] October 19, 2023 (3) | 2023.10.19 |