[SeSAC] November 6, 2023

✔︎ 오늘의 정리

  • 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