Search

[정리] SOPT 29기 1주차 과제 정리(심화)

UITextFieldDelegate

1주차 심화 과제를 해결하기 위해서 textFieldDidEndEditing 함수를 사용했습니다.
해당 함수는 textfield의 수정(타이핑)이 끝날 때, textfield의 상태를 봐서 다음 버튼의 상태를 어떻게 할 지 결과를 내려줄 겁니다.
1.
textfield의 상태보기
우린 textfield의 어떤 상태를 보고 싶나요? 비었는지 아니면 채워져 있는지 보고 싶습니다.
textfield.text?.isEmpty값을 이용해서 상태를 알아낼겁니다.
하지만 한 가지 중요한 점은 해당 값이 nil이 될 수도 있기 때문에 if let 혹은 guard let를 통해서 nil값을 받아올 수 없도록 해야합니다.
if let isNameEmpty = nameTextfield.text?.isEmpty, let isAccountEmpty = accountTextfield.text?.isEmpty, let isPasswordEmpty = passwordTextfield.text?.isEmpty { }
Swift
복사
우리는 이런 식으로 empty값을 가져올 수 있을 겁니다.
2.
조건 걸기
만약에 들어온 empty값들이 모두 false라면 우리는 button를 사용할 수 있도록 만들어야 하고 그 반대라면 button의 사용을 막아야 합니다.
if let isNameEmpty = nameTextfield.text?.isEmpty, let isAccountEmpty = accountTextfield.text?.isEmpty, let isPasswordEmpty = passwordTextfield.text?.isEmpty { if isNameEmpty || isAccountEmpty || isPasswordEmpty { signinButton.isEnabled = false signinButton.backgroundColor = .lightGray } else { signinButton.isEnabled = true signinButton.backgroundColor = .googleBlue } }
Swift
복사
* 아무리 코드를 Delegate에 쳤다고 해도 textfield의 delegate를 위임받지 않는다면(self) UITextFieldDelegate안에 있는 함수들을 사용할 수 없습니다.