부스트코스 “iOS 프로그래밍” 실습 프로젝트B. SignUp - 개발일지

Updated:

2020.08.11

  • 프로젝트 생성
  • 깃 생성하고 깃허브 레파지토리 생성 후 연동
  • 뷰 컨트롤러 3개(SignIn, SignUP, SignUpAdd)생성 후 스토리보드와 연결
  • SignInViewController
    • 필요한 UI 컴포넌트들 추가
    • 오토 레이아웃 적용 (세로/가로 모두 확인)
  • 오토 레이아웃을 세로/가로 다르게 적용하는 방법이 있을까?




2020.08.12

  • 실제 아이폰11에서 테스트하기 위해 개발자 계정등록
  • 다크모드 적용안되게 하기
  • 포인트, 픽셀 개념 알아보기
  • 스토리보드 SignUpViewController 화면 구성
    • UI 컴포넌트 추가
    • 가로/세로 모드 오토레이아웃 적용
  • SignUpViewController 취소 버튼 누르면 뒤로가기 (모달 내리기)
  • 스토리보드 SignUpAddViewController 화면 구성
    • UI 컴포넌트 추가
    • 가로/세로 모드 오토레이아웃 적용
  • SignUpViewController와 SignUpAddViewController 화면 연결
    • 내비게이션컨트롤러 추가 후 내비게이션 바 안보이게 함
    • 취소버튼시 모달 dismiss해서 첫 화면으로 돌아가게 함
  • 이미지 선택 기능 추가
    • 이미지 피커 델리게이트, 제스처 인식기 델리게이트 추가
    • 이미지 뷰 탭하면 이미지 피커 모달로 화면 이동
  • 텍스트 필드 외 영역 선택시 키보드 내리기 기능 추가
    • 제스처 인식기 델리게이트 메서드에 이미지 뷰 탭 기능과 같이 구현

회원가입정보


2020.08.13

  • 테스트폰(iOS12.4)에서 앱 실행하기
    1. 프로젝트 설정에서 OS Deployment Target 옵션을 13.6에서 12.4로 변경
    2. SceneDelegate 관련 에러 발생
    3. iOS 13 이상에서만 SceneDelegate 방식 사용하도록 수정
  • UIDatePicker로 생년월일 선택
    • 값이 바뀌면 레이블에 생년월일 즉각 반영
    • 유저가 선택하기 전에도 미리 현재 날짜 값 표시하기
  • UserInformation 싱글턴 클래스
    • 싱글턴 클래스로 작성
    • 유저 정보 프로퍼티 추가
  • extension 으로 클래스 분리해서 가독성 올리기
  • 텍스트 필드에서 return키 누르면 다음 텍스트 필드로 커서 이동
  • ‘다음’버튼 활성화
    • ‘다음’버튼 활성화 조건 확인 메서드 checkSignUpInformation() 추가
    • 텍스트 필드, 텍스트 뷰 편집 종료시마다 checkSignUpInformation() 호출




2020.08.14

  • ‘다음’버튼 활성화
    • checkSignUpInformation()에 프로필 이미지 선택했는지 조건 추가
    • checkSignUpInformation() 코드 리팩토링




2020.08.17

전화번호 입력 확인

  1. 가입 조건 확인 메서드 checkSignUpInformation() 추가
  2. UITextFieldDelegate 프로토콜 추가
  3. 델리게이트 메서드 textFieldDidChangeSelection(_:) 에서 checkSignUpInformation() 호출

생년월일 입력 확인

  1. DatePiker 값 바뀜 플래그 추가
  2. checkSignUpInformation()에 DatePicker 조건 추가

‘가입’ 버튼 활성화, 임시 데이터 저장

  • 전화번호 3자리 이상 입력
  • 생년월일 입력 (DatePicker 움직여야함)
    • 오늘 날짜와 같은 날이 아니면 충족되게 함
  • ‘이전’ 버튼 누르면 임시데이터로 저장
  • 화면3 열때 임시데이터 있다면 임시데이터 가져오기
  • ‘가입’버튼 누르면 임시데이터를 정식데이터에 저장하고 첫화면으로 이동




2020.08.18

화면1,3 - 텍스트 필드외 터치하면 키보드 내리기

  • UIGestureRecognizerDelegate 프로토콜 추가
  • view에 UITapGestureRecognizer 추가해서 인식되면 편집종료

UserInformation.swift 리팩토링

  • 클래스, 구조체, 함수명 정리
  • 주석 추가

내비게이션 컨트롤러 리팩토링

SignInViewController 리팩토링

  • 주석 추가
  • 의미없는 옵셔널 바인딩 수정

SignUpViewController 리팩토링

  • 주석 추가
  • 의미없는 옵셔널 바인딩 수정
  • 메서드 이름 수정

SignUpAddViewController 리팩토링

  • 주석 추가
  • 의미없는 옵셔널 바인딩 수정
  • 메서드 이름 수정




2020.08.19

오픈소스 프로젝트들 참고

  • 카카오 SDK
  • 네이버 SDK
  • 라인 SDK
  • 파이어폭스 iOS
  • 파이어폭스 포커스 iOS




2020.08.20

오픈소스 프로젝트들 참고

파이어폭스

  • TapGestureRecognizer로 연결한 액션 메서드 이름은 앞 또는 뒤에 Tapped 붙임
    • 예시: learnMoreDefaultTapped()
  • pushViewController() 자체가 목적인 메서드는 이름을 show, push로 시작
    • 단순히 다른 뷰 컨트롤러 보일때는 tapped 메서드안에서 pushViewController 호출




2020.08.21

오픈소스 참고

  • 싱글턴 사용 방식 참고




2020.08.22

오픈소스 참고

  • 싱글턴 사용 방식 참고
  • Firebase 회원가입 방식 참고




2020.08.23

오픈소스 참고

  • Firebase 회원가입 방식 참고
  • Line SDK 샘플 참고




2020.08.24

UserInformation 클래스 수정

  • 회원가입정보 구조체 삭제하고 클래스 프로퍼티로 변경
  • 관련된 코드 수정

버튼 활성화 조건을 연산프로퍼티로 분리




2020.08.25

리뷰 제출

  • 주석 보완
  • 질문 내용 정리
  • 불필요 코드 제거
  • 리뷰 제출

Leave a comment