Spacing
Github 링크
담당 파트
MyPageViewController
- 저는 우선 마이페이지 파트를 맡게 되었습니다.
- 마이 페이지에는 아래와 같은 기능을 구현했습니다.
- 사용자 정보 보여주기
- 프로필 이미지 변경
- 즐겨찾기 / 등록 / 이용한 장소 확인
- 로그아웃
- 새로운 장소 등록
- 마이페이지를 처음에는 더 추가적인 기능을 구현할 수 있다고 생각해서, MyPageMenu 구조체를 생성해서, 해당 구조체에 데이터를 추가하면 자동으로 메뉴가 추가될 수 있도록 구현을 했지만, 시간적 제약 떄문에 실제로는 따로 추가한 기능은 없고 위에 말한 기능들이 전부입니다.
- 마이페이지는 TableView 하나로 구현을 했고, Section을 나눠서, 각각 세션별로 다른 메뉴를 추가 했습니다. 각각의 Section은 다른 TableViewCell를 사용해서 디자인을 다르게 했습니다.
- Section 0
- 사용자 정보를 보여주는 Section입니다. 해당 Section은 사용자 프로필 이미지와 이름 그리고 이메일이 보이게끔 구현을 했습니다.
- 추가적으로 프로필 이미지를 클릭하면 프로필 이미지를 변경할 수 있도록 추가했습니다.
- Section 1
- 이부분에서는 실질적으로 메뉴들을 나열하는 용도로 사용했습니다. 개인정보, 즐겨찾기, 등록된 Place, 이용내역 메뉴를 추가했습니다. 하지만 개인정보 페이지는 시간적 관계로 구현을 하지 못했습니다.
- 즐겨찾기, 등록된 Place, 이용내역 페이지는 다 같은 ViewController로 연결되게끔 설정했습니다. 다만 데이터가 다르게끔 설정을 해서 ViewController를 재활용했습니다.
- Section 2
- 해당 Section은 로그아웃 버튼을 구현했습니다. NavigationController로 Stack이 쌓아져있기 때문에, RootViewController 즉 로그인 화면으로 넘어가게끔 구현했습니다.
- TableView로 만든 제일 큰 이유는 Scrollview를 상속받기 때문이이었지만, 실질적으로는 Scrollview기능을 사용하지 못할 정도로 메뉴가 적어서 아쉬웠습니다.
PlaceViewController
- 해당 ViewController는 NavigationController에다가 SearchController를 추가하였으며, 그 아래는 각각 Collectionview, TableView를 사용했습니다.
- SearchController에서 텍스트를 인식해서, 장소 이름, 위치를 확인해서 장소를 보여줍니다. 원래는 따로 ViewController를 추가해서 SearchResultViewController를 만들어줘야하지만, 그 과정은 아래에 있는 TableView를 통해 구현을 하였으며, SearchBarDelegate와 SearchControllerDelegate를 이용해서 실시간으로 바뀌는 TableView를 만들었습니다.
- CollectionView도 Place 구조체를 만들때 카테고리를 만들면 좋을꺼 같아서 Enum으로 만든거를 CaseIterable 을 채택해서 배열로 만들어서 Data를 만들었습니다.
- 각각의 테이블뷰를 클릭하면, 해당 장소의 세부 페이지로 넘어갑니다.
DetailViewController
- 이 파트는 원래는 제 파트가 아니었지만 팀원이 어려워하고 있어서 전체적인 틀을 잡아줬습니다.
- AutoLayout를 다들 어려워 하는 경향이 있어서 AutoLayout를 잡아줬습니다. 그리고 예약하기 기능 및 즐겨찾기 기능을 추가해서, 다른 VC에서도 해당 정보를 받을 수 있도록 구현했습니다.