-
[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) }
'iOS > project' 카테고리의 다른 글
[iOS]GNB 글로벌 네비게이션 메뉴(탭메뉴) 생성하기 (0) 2023.05.27 [iOS] 인스타그램 클론 코딩을 해보자!(3) - 버튼 생성&꾸미기 (1) 2022.10.10 [iOS] 인스타그램 클론 코딩을 해보자!(1) - 로그인, 회원가입 화면 (0) 2022.09.23 [Swift] Dice game에 Auto layout 추가하기 (0) 2022.08.15 [Swift] Dice game! 주사위를 굴려보세요 (0) 2022.08.04