조금 익숙한 코드가 보이시나요? 저번에 했던 Email 과 Password 체크 하는 함수들을 이곳으로 옮겼습니다 ㅎㅎ!
이곳에서 한번에 관리 할꺼에요 !!
그리구 프로퍼티에 있는 pass는 비밀번호 체크를 위해서 만들어 두었습니다ㅎ!!
비밀번호로 입력받은 값을 프로퍼티 pass 로 값으로 전해 준뒤에
프로퍼티 pass 를 가지고 비밀번호 체크 조건을 걸어줍니다!!
자~ 이제!!
저희 가 볼것은!
let passwordCheckTextRelay = BehaviorRelay(value: "")
let idTextRelay = BehaviorRelay(value: "")
이곳과~
func idVaild() -> Observable<Bool> { return Observable.combineLatest(idTextRelay,passwordCheckTextRelay).map{ userid,userpassCheck in return userid.isEmpty && userpassCheck.isEmpty } }
이곳입니다!
일단 프로퍼티 먼저 설명을 드리겠습니다!
BehaviorRelay 는 combineLatest 돌리기 위해서 선언해야될 타입이에요
(value: ) 는 제너릭 즉! 이라고 보시면 될꺼 같구요!
저는 String을 받기 때문에 미리 초기값까지 지정을 해준것 입니다!!
그리고 idVaild() 함수를 보시면! 일단 반환값은 Observable 입니다!
Observable 은 간접적으로 value들을 살펴볼수 있는 타입이기도 하지용
Observable 안에는 .combineLatest 가 있는데요 여기에 아까 선언해둔 프로퍼티를 넣게 되면 연결이 된거라고 볼수 있습니다! 그리고 나서 맵핑으로 주어진 제약들을 체크 한뒤~ true나false로 반환해주게 됩니다!
그리구 .combineLatest 를 돌리기 위해선 클로져 안에 두개의 파라미터가 들어가야 되는데용..
저는 솔직히 id만 체크하면 되기때문에 id만 선언하려고했는데.. 안되더라구용..왠지 모르겠지만용.....
그래서 일단 비밀번호확인쪽 텍스트필드도 같이 넣어서 함수를 돌렸어용..ㅎㅎ
자 이제 함수는 만들었고 바인딩 해주어야겠지용
일단 ! 프로퍼티로 ViewModel 인스턴스를 하나 만들어 주시구용!
그런식으로 작업 하시게 되면! 로그인 버튼 비활성화 시킬수 있어요 ㅎㅎ alpha값을 조절하는거 이지만요 ㅎㅎ!