개발/아이오에스

swift] delegate 정리 UITextFieldDelegate 예제

dev.jake 2020. 12. 22. 09:34

 

델리게이트 패턴은 처리해야 할 일 중 일부를 다른 객체에 넘기는 것을 뜻 한다.

UITextFieldDelegate 예제를 사용해서 사용자가 리턴(엔터)를 눌렀을 때 랜덤 값(게임의 결과)와 사용자가 입력 값이 같은지 확인하는 게임을 만들었다.

 

UITextFieldDelegate을 사용안하면 사용자가 숫자를 입력하고 버튼을 누르면 값을 비교하는 방법으로 진행을 했다.

 

UITextFieldDelegate을 사용하기 위해

 

class ViewController: UIViewController, UITextFieldDelegate {  // ViewController클래스 옆에 UITextFieldDelegate을 채택 했다.

 

let result = Int.random(in: 0...100)

    override func viewDidLoad() {

        super.viewDidLoad()

        inputNumber.delegate = self // 선언한 UITextFieldDelegate 위임자를 정해주는 과정

       

        print(result)        

    }

ViewController가 inputNumber이라는 텍스트필드에 이벤트가 발생하면 프로토콜에 따라 응답을 주는 것.

 

func textFieldShouldReturn(_ textField: UITextField) -> Bool {

        var input = Int(inputNumber.text!)

        if result == input {

            resultLabel.text = "Bingo!"

        }

        else if result > input! {

            resultLabel.text = "up"

        }

        else{

            resultLabel.text = "down"

        }

        

        return true

    }

 

UITextFieldDelegate안에 정의되어있는 함수인 textFieldShouldReturn을 사용해서 사용자가 값을 입력하고 버튼 클릭이 아닌  엔터를 누르게 되면 값을 비교하는 함수를 만들었다.