deprecated/가족 메신저(project-ios)

[RxSwift] button isSelected scan으로 토글처럼 사용하기

lgvv 2021. 9. 8. 16:09

 

(init) 2021. 9. 8. 16:09

(update) 2022. 6. 8 13:23

 - 이 당시에는 Realy에 대한 이해가 부족해서 Scan으로 처리했었는데, Relay로 만든 것을 구독하면 이전 값을 보유하고 있어서 Scan을 굳이 사용하지 않아도 됩니다. 해당 정보는 Yapp 면접 당시 면접관님이 주셨는데, 불현듯 떠올라서 적어둡니다. 혹시라도 보신다면 Relay 사용하세요 

(update) 2022. 06. 27. 13:14

 - 당시에는 코딩 컨벤션을 몰라서 변수명이 엉망진창이네요 ... 

 - 스타일쉐어 swfit 코드 컨벤션을 찾아봐주세요. 이거 막장입니ㅏㄷ. .. 하.. 그냥 이런 것도 있구나 하면 될 거 ㅅ ㅆ같ㅌ습ㄴ니ㅣ다..

 

✅ 이번 시간에는 RxSwift를 이용하여 버튼 상태 변화를 알아볼 예정이야.

 

내가 스택뷰 안에서 버튼을 어떻게 선택했는지 확인하는 코드가 필요했어.

스택뷰 안의 버튼들!

참고 부분을 확인하면 두배로 더 좋다!

 

✅ 버튼 상태를 바꾸는 코드

   myButton.rx.tap
   .scan(false) { (lastState, newValue) in
      !lastState
   }
   .bind(to: requestMoreButton.rx.isSelected)
   .disposed(by: disposeBag)

scan의 활용도에 많이 놀랐다.

어떻게 이런 생각을 할 수 있었는지 ㅜㅜ 아직 배워할 것이 정말 많다고 느끼는 시간이었다.

 

🟠 개발에서는 어떻게 적용했는가?

어떤 버튼이 선택되었는지 확인하는 과정이 최종 submit 과정에서 한번만 확인하면 되는데, scan 코드와 subscribe안에서 내가 필요한 조건이 함께 작성되지가 않아서, 마지막에 텍스트의 색을 통해 구분하는 것으로 정했다.

이렇게 작성!

🟠 보완하는 것을 아는 분은 댓글을 달아주세요 ㅜ 

 

 

 

 

(참고)

https://iphonedev.co.kr/iOSDevQnA/161365

 

iOS개발질문 - RxSwift 버튼이 isSelected 인지를 구독하고 싶습니다.. - 아이폰데브

안녕하세요,   현재 회원가입 페이지에서   공란이 없고 버튼이 모두 체크 되어있는 경우만   다음 버튼을 활성화 시키기 위해   Driver.combineLatest() 로 묶어서 이를 처리하려고 하는데ㅔ   입력

iphonedev.co.kr

https://jusung.github.io/scan/

 

[RxSwift] Scan

Scan 연산자는 상태를 다루는데 유용한 연산자입니다. 이번 포스트에서는 Scan 연산자의 동작과 활용에 대해 살펴보도록 하겠습니다.

jusung.github.io