# 오픈 마켓2 [STEP2] 허황, 애플사이다
메이슨 안녕하세요. @myssun0325
애플사이다 @just1103, 허황 @hwangjeha 입니다.
STEP2 완료하진 못했지만 진행한 부분까지 피드백 받을 수 있을까 하고 PR 드립니다.(쭈굴)🙈
STEP4 브랜치를 깜빡해서 STEP3으로 올리겠습니다😭
## STEP2 구현내용
### 구현 화면
[상품 상세 화면 Layout]
### 1. 상품 상세 조회 Model 타입 구현
상품의 상세 정보를 받기 위해 모델 타입을 구현했습니다.
Vendor 타입은 서버에서 Responce로 응답을 보내주긴 하지만 현재 프로젝트에선 사용하고 있지 않아 타입만 만들어줬습니다.
### 2. 화면 이동 (상품 목록 화면 -> 상품 상세 화면)
상품 목록화면에서 Cell을 탭하면, 해당 제품의 상세화면으로 이동합니다. Cell의 productId 프로퍼티를 추가하여 해당 Cell의 정보를 받아오도록 구현했습니다.
### 3. 상품 상세 화면 구현
상품 상세 화면은 스크롤 뷰로 구현했습니다. 내부에 컬렉션 뷰, 스택 뷰를 활용하여 레이아웃을 잡았습니다.
또 상품 상세 화면의 데이터 소스 역할을 하는 ProductDetailDataSource 타입을 델리게이트 패턴을 적용하여 뷰컨트롤러 델리게이트로 사용하도록 했습니다.
### 아직 구현하지 못한 부분
- Action Sheet의 형태만 구현했고, 수정 또는 삭제 Action 버튼을 탭했을 때 제품 수정화면을 연결하거나, 사용자에게 비밀번호를 입력받는 기능은 아직 구현하지 못했습니다.
- 추후에 상품 수정화면은 상품 등록화면과 유사한 기능이 많으므로 동일한 부모 클래스를 공유하는 ViewController을 추가할 예정입니다. (처음에는 상품 등록/수정 화면이 동일한 ViewController를 사용하도록 할 계획이었지만, 이미지 CollectionView와 관련된 기능이 예상외로 차이점이 많아서 별도의 ViewController를 추가하는 게 적절하다고 판단했습니다.)
## 고민한 점 및 궁금한 점
### 1. 화면 전환 시 데이터 전달 방법
상품 리스트 화면에서 상품 상세 화면으로 전환될 때 선택된 상품의 id를 넘겨줘야하는데 효율적인 전달 방법을 구현하지 못했습니다. 화면 전환시 상품 상세 화면 뷰컨의 productId 를 변경하는 메서드를 호출하고 productId를 변경하는 방식으로 구현했습니다.
추후, 델리게이트 패턴이나 프로토콜을 활용해 productId를 넘겨주는 방식으로 개선하겠습니다.
STEP 2를 전부 구현하지 못해서 고민한 점이나 궁금한 점이 많이 없네요😭
4주동안 리뷰해주시느라 정말 고생 많으셨습니다.
추상화부터 ViewController 분리까지 어려운 내용이 많았는데 정말 많은 도움이 됐습니다. 감사합니다🤩🤩🤩