<aside> 🍎 [희슬]
로그인 유효성 검사
뷰모델에서 로그인 유효성 검사를 처리했습니다. 사용자 입력을 실시간으로 검증하여 유효한 로그인 정보를 입력했는지 확인합니다.
카카오 로그인
카카오 로그인은 앱 설치 여부에 따라 웹 또는 앱으로 이동하여 로그인을 처리합니다. 앱이 설치되어 있으면 카카오 앱을 통해, 설치되어 있지 않으면 웹뷰를 통해 로그인을 진행합니다.
프로필 등록
사용자가 가입 후 프로필 등록까지 완료한 경우, 로그인 시 발급받은 토큰과 함께 프로필 정보를 서버로 전송합니다. 이를 통해 사용자 정보를 통합 관리할 수 있습니다.
중복 코드 감소
비슷한 컴포넌트를 여러 곳에서 사용하고, 탭 여부나 유효성 검사 결과에 따라 버튼과 에러 메시지 라벨의 속성을 업데이트해야 하는 경우가 많아, DRButtonType 및 DRErrorType 프로토콜을 정의했습니다. 이를 통해 중복 코드를 줄이고, 일관된 속성 업데이트를 구현했습니다.
프로토콜 채택 및 확장
각 프로토콜을 채택받아 필요한 속성값을 세팅하는 구조체를 구현하고, extension에서 타입을 파라미터로 받아 해당 타입에 맞는 속성값을 설정해주는 메소드를 작성했습니다.
이 방식은 코드 중복을 줄이고 유지보수성을 높이는 좋은 접근 방식입니다. 또 다른 방법으로는 Swift의 제네릭과 프로토콜 조합을 사용하여 더욱 유연한 타입 관리를 할 수 있습니다.
컴포지셔널 레이아웃 정의
각 섹션의 레이아웃 속성을 정의하는 MainSectionLayout 프로토콜을 작성했습니다. 각 섹션의 레이아웃 속성을 제외한 나머지 코드는 모두 중복되므로, 프로토콜로 정의하여 중복 코드를 줄였습니다.
프로토콜 사용
프로토콜을 사용하여 각 섹션의 레이아웃을 정의함으로써, 코드의 재사용성을 높이고 유지보수를 용이하게 했습니다.
중복 코드를 줄이기 위한 또 다른 방법으로는, 상속을 활용하여 공통 기능을 상위 클래스에 구현하고, 각 섹션별로 상속받아 사용하는 방법이 있습니다. 또는, 함수형 프로그래밍 기법을 활용하여 공통 레이아웃 설정을 클로저로 전달하는 방식도 고려할 수 있습니다.
</aside>
<aside> 🍎 [신영]
UITableView
를 사용하여 항목 재정렬을 위한 드래그 앤 드롭 기능을 구현했습니다. 하지만 셀 사이의 간격을 설정할 수 없는 한계에 직면했습니다. 이 문제를 해결한 방법은 다음과 같습니다:
PHPickerView
를 활용하여 프로필 이미지 설정과 코스 등록하기 이미지를 다루었습니다. PHPickerView는 사용자의 사진 접근 권한을 간소화하고, 다양한 이미지를 선택할 수 있는 기능을 제공합니다.
두 가지 DatePicker 모드(.date와 .time)를 사용했으며, 커스텀 PickerView도 구현하여 0.5 단위로 증가하는 숫자를 선택할 수 있도록 했습니다.
이와 같은 기술적 구현을 통해 사용자의 다양한 요구 사항을 충족시키고, 사용자 경험을 향상시켰습니다.
</aside>
<aside> 🍎 [민서]
코스 둘러보기 & 지역 필터링 바텀 시트
코스 상세보기
<aside> 🍎 [수민]