ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [iOS] 인스타그램 클론 코딩을 해보자!(2) - 회원가입 액션 연결
    iOS/project 2022. 10. 3. 12:45

     

     

    ✅ 오늘의 목표

    회원가입 화면에서 textfield에 텍스트를 입력하면 콘솔창에 각각 입력된 값을 띄워주기

     

     

    1️⃣ 유효성 검사

    textfield에서 유효한 값이 입력되는 경우 true로 값 변경해주는 코드 작성하기

     

    import UIKit
    
    class RegisterViewController: UIViewController {
        
        // MARK: - Properties
        // 유효성 검사
        // textfield에서 유효한 값이 입력되는 경우 true로 값 변경
        var isValidEmail = false
        var isValidName = false
        var isValidNickname = false
        var isValidPassword = false

     

    2️⃣ textField 연결

        // Textfields
        @IBOutlet weak var emailTextfield: UITextField!
        @IBOutlet weak var nameTextfield: UITextField!
        @IBOutlet weak var nicknameTextfield: UITextField!
        @IBOutlet weak var passwordTextfield: UITextField!

     

    3️⃣ Action을 코드로 작성

    IBAction으로 구현했던 것을 코드로 작성하기 위해서는 @objc 가 필요하다!

    @objc는 objective-c 코드를 swift 파일내에서 사용해야 할 때 사용하는 코드이다

     

       // MARK: - Actions
        // action을 코드로 작성
        @objc
        func textFieldEditingChanged(_ sender: UITextField) {
            let text = sender.text ?? ""  // 옵셔널 벗겨주기
            
            switch sender {
            case emailTextfield:
                print("email")
            case nameTextfield:
                print("name")
            case nicknameTextfield:
                print("nickname")
            case passwordTextfield:
                print("password")
            default:
                fatalError("Missing TextField... :(")
                
            }
        }

     

    4️⃣ TextField와 Action을 연결해주는 코드

        // MARK: = Helpers
        // textField와 action 연결
        private func setupTextField() {
            
            
             emailTextfield.addTarget(self, action: #selector(textFieldEditingChanged(_:)), for: .editingChanged)
             
             nameTextfield.addTarget(self, action: #selector(textFieldEditingChanged(_:)), for: .editingChanged)
             
             nicknameTextfield.addTarget(self, action: #selector(textFieldEditingChanged(_:)), for: .editingChanged)
             
             passwordTextfield.addTarget(self, action: #selector(textFieldEditingChanged(_:)), for: .editingChanged)
             }

     

    📌 Tip

    2️⃣, 4️⃣ 번을 조금 더 간단하게 작성할 수 있는 방법이 있다.

     

    (1) 2️⃣ 에서 배열을 선언해주고

        var textFields: [UITextField] {
            [emailTextfield, nameTextfield, nicknameTextfield, passwordTextfield]
        }

     

    (2) 4️⃣ 에서 foreach를 이용해서 코드를 작성해준다

            // 📌 forEach: 위의 긴 코드들을 한 번에 쓸 수 있는 코드
            // 식별된 데이터의 콜렉션으로부터 요구에 따라 뷰를 계산해주는 구조체
            textFields.forEach{tf in
                tf.addTarget(self,
                             action: #selector(textFieldEditingChanged(_:)),
                             for: .editingChanged)
            }

     

     

     

Designed by Tistory.