You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
로그인 완료 시 UserDefaults에 아이디와 비밀번호를 저장하여, 이후 앱 실행 시 자동으로 입력되도록 처리했습니다.
아이디와 비밀번호 입력값에 대해 유효성 검사를 적용하여 올바른 형식으로만 회원가입 및 로그인이 가능하도록 했습니다.
로그인 성공 후 TabBar 기반 메인 화면으로 이동하도록 흐름을 설계했습니다.
2. 영화 목록 페이지
TabBar의 첫 번째 화면으로, TMDB API를 통해 영화 목록 데이터를 가져오도록 구현했습니다.
UICollectionView를 활용해 영화 포스터를 가로 스크롤 형태로 표시했습니다.
현재 상영작, 인기 영화, 개봉 예정작 등 여러 영화 목록을 화면에 구성할 수 있도록 설계했습니다.
사용자가 포스터를 선택하면 영화 상세 화면으로 이동할 수 있도록 연결했습니다.
3. 영화 세부 페이지
영화 목록 또는 검색 결과에서 특정 영화를 선택하면 상세 페이지로 이동하도록 구현했습니다.
영화 포스터, 제목, 장르, 개봉일, 줄거리 등 주요 정보를 화면에 표시했습니다.
선택한 영화 정보를 다음 예매 화면으로 자연스럽게 전달할 수 있도록 데이터 흐름을 구성했습니다.
4. 영화 예매 입력 페이지
영화 상세 페이지에서 예매 버튼을 누르면 예매 입력 화면으로 이동하도록 구현했습니다.
영화관, 날짜, 시간, 인원 수, 좌석 등 예매에 필요한 정보를 입력할 수 있도록 구성했습니다.
결제하기 버튼을 누르면 예매 내역이 저장되고, 이후 마이페이지에서 확인할 수 있도록 연결했습니다.
예매 과정에서 선택한 데이터를 기반으로 화면 상태를 갱신하도록 구현했습니다.
5. 영화 검색 페이지
TabBar의 두 번째 화면으로, 사용자가 입력한 텍스트를 기준으로 영화를 검색할 수 있도록 구현했습니다.
검색 결과는 UICollectionView를 활용해 영화 포스터 형태로 표시했습니다.
검색어를 포함한 영화 데이터를 API에서 받아와 화면에 반영하도록 구성했습니다.
검색 결과에서 영화를 선택하면 상세 페이지로 이동할 수 있도록 연결했습니다.
6. 마이페이지
TabBar의 세 번째 화면으로, 사용자 계정 정보와 예매 내역을 확인할 수 있도록 구성했습니다.
회원가입 시 입력한 사용자 정보를 표시할 수 있도록 UserDefaults 기반으로 데이터를 관리했습니다.
사용자가 결제한 영화 예매 내역을 확인할 수 있도록 저장 및 조회 기능을 구현했습니다.
사용자 정보와 예매 내역을 한 화면에서 확인할 수 있도록 마이페이지 구조를 설계했습니다.
회고
겪언던 문제점
장예슬: 이미 예매하기 창에서 데이터 저장까지 구현을 마쳤어서 추가기능으로 영화관 좌석뷰를 구현할때 데이터 흐름이 어려웠습니다.
손영빈: 레이아웃 구성을 어떻게 하는 게 좋을까에 대한 고민이 많았다. 또한, "Entity의 Attribute 설정을 잘못했을 때, 어떻게 수정을 해야할까?"와 "다른 Entity를 JOIN 하는 방법은 없을까?"를 생각해보았다.
목표대비 이룬점
장예슬: MVVM 구조를 적용하고 좌석 선택 및 예매 기능을 구현하여 실제 앱과 유사한 흐름을 완성했습니다!! 필수구현까지가 목표였지만 추가 구현까지 끝내서 기쁩니다
손영빈: CoreData를 설계하고 사용하면서 익숙해진 것 같다. 또한, MVVM도 지난 과제까지는 적용하기까지 시간이 꽤 오래걸렸는데, 아직 MVC -> MVVM으로 리팩토링하는 과정을 거치는 것이 더 편하긴 하지만, 수정하는 것에 있어 시간이 많이 단축되었다고 느꼈다.
소감
장예슬: MVVM구조와 CollectionView 공부가 많이 된 프로젝트였습니다!!
손영빈: 빠른 시일 내에 완성하여 보다 많은 도전 구현을 진행해보고자 했지만, 그러지 못한 것 같아 아쉽다. 그래도 CollectionView, CoreData, MVVM 구조 익숙해지기에 성공한 것 같다.