dev._.note

[Swift] Kiosk 팀과제 2 본문

Dev/SWIFT

[Swift] Kiosk 팀과제 2

Laena 2024. 1. 2. 20:25

화면 구성 내용

제목 : NineBugers

메뉴 : MainMenu, SideMenu, Beverage

깃허브 : https://github.com/mirae0312/KioskProject

 

데이터

더보기

burgerMenu : 빅맥: 5500원, 골든 포테이토 버거: 5900원, 1955버거: 7000원, 행운버거 골드 스폐셜: 7500원, 쿼터파운드: 6700원, 슈슈버거: 4500원, 슈비버거: 5500원, 맥크리스피 디럭스 버거: 5200원

sideMenu : 컬리 후라이: 2600원, 토마토 치킨 스낵랩: 4500원, 코울슬로: 1500원, 상하이 치킨 스낵랩: 5000원, 후렌치 후라이: 2500원, 골든 모짜렐라 치즈스틱: 1800원, 맥너겟: 1200원, 해쉬 브라운: 2500원

beverages : 아이스 바닐라 라떼: 4500원, 카페라떼: 3800원, 아메리카노: 2000원, 제주 한라봉 칠러: 5800원, 자두 천도복숭아 칠러: 6500원, 바닐라 라떼 7000원, 카푸치노: 3900원

  1. 총 주문 내역 (개수 / 금액)
  2. 주문 리스트 반영 화면
  3. 취소하기, 결제하기 버튼

역할 분담

메뉴 카테고리 바 (CategoryViewController)
주문 내역 확인 (ListViewController)
메뉴 화면 (MenuViewController)
부가 기능 (이미지) (ImageViewController)
취소/결제 버튼 화면 (PayViewController)

타임라인

  • 12월 26일
    1. 역할 분담
    2. 변수명 통일
  • 12월 27일
    1. 개인 코드 작업
    2. 깃허브 브랜치 생성
  • 12월 28일
    1. 개인 코드 작업
    2. 개인 코드 연결을 위한 push 및 오류 확인
  • 12월 29일
    1. 개인 코드 작업
    2. 충돌 오류 해결
  • 12월 30일
    1. 개인 코드 연결
    2. merge시 오류 확인
  • 1월 1일
    1. 코드 연결 마무리 작업
    2. merge

개발기록

기능사용 이유와 코드 로직 설명

해당 기능 사용 코드 로직 설명

ViewController 메뉴 및 장바구니 기능 - 메인 뷰로 메뉴 표시 및 장바구니 담당. - CategoryStackView로 메뉴 카테고리 선택 시 메뉴 타입 변경. - ButtonUIView로 취소 및 결제 버튼 구현.
reloadMenu(type:) 메서드 / 메뉴 새로고침 currentMenuType 업데이트 및 새로운 메뉴 유형을 반영하기 위한 컬렉션 뷰 리로드
UICollectionViewDelegate - collectionView(:numberOfItemsInSection:) 현재 메뉴 타입에 따른 아이템 수 반환. - collectionView(:cellForItemAt:) 각 셀을 해당 데이터로 구성하여 반환.
UITableViewDelegate, UITableViewDataSource - tableView(:numberOfRowsInSection:) 주문 목록 행 수 반환. - tableView(:cellForRowAt:) 각 셀에 주문 정보 채움.
Closure를 이용한 메뉴 수량 조절 - OrderListTableViewCell의 plusBtn과 minusBtn 클로저로 메뉴 수량 조절 및 화면 갱신
ButtonUIViewDelegate 프로토콜 - ButtonUIView의 취소 및 결제 버튼 액션을 ViewController에서 구현.
Alert를 이용한 사용자 액션 처리 - ButtonUIViewDelegate를 통한 전체 취소 및 결제 액션 구현 및 주문 없을 시 버튼 비활성화 로직 구현
ViewController.viewDidLoad() 초기 설정 - 스택 뷰와 버튼 뷰 델리게이트 설정 - 컬렉션 뷰 셀 Nib 등록 - 초기 메인 메뉴 초기화 및 표시 - UI 요소 설정 - 주문 내역을 표시하는 테이블 뷰 설정
refreshLabel() 장바구니 항목 수 업데이트 장바구니 항목 수 레이블 업데이트
collectionView(_:didSelectItemAt:) 항목 선택 처리 선택된 메뉴 유형 확인 - 선택된 항목이 장바구니에 있는지 확인 - 카트 정보(수량, 총 가격) 업데이트 - 테이블 뷰 및 입력 뷰 리로드
CategoryStackViewDelegate.changeToMenu(type:) 메뉴 유형 변경 처리 선택된 카테고리에 따른 메뉴 유형 업데이트 - reloadMenu(type:) 호출로 메뉴 새로고침
ButtonUIViewDelegate.present() '취소' 버튼 액션 처리 전체 주문 취소를 위한 경고창 표시 - 확인 후 주문 초기화 및 UI 업데이트
ButtonUIViewDelegate.payPresent() '결제' 버튼 액션 처리 결제 완료를 위한 경고창 표시 - 확인 후 주문 초기화 및 UI 업데이트

버그 or 오류

오류사항 해결 방법

의사소통 업무 분담 및 변수명 일치를 위한 회의 일정 정리 - 실시간 개발 상황 공유 및 수정
버전 관리 Github에서 기능별 및 dev 브랜치 사용하여 파일 버전 관리
병합 시
충돌
.gitignore 파일 생성하여 제외할 파일 지정 - 충돌 시 파일 비교 후 변경사항 결정, 마커 제거
Assets
Image
파일
특수문자 및 한글 제외한 영문 파일명으로 변경하여 로딩 문제 해결
IBOutlet 연결 Inspectors의 Connections Inspector에서 연결 확인 - 연결 실패 시 Xcode 재시작 후 재연결
메뉴 수량 조절 오류 - 장바구니 아이템 추가 및 수량 조절 시 인덱스 오류 등 수정 tableView(_:cellForRowAt:) 함수에서의 문제로, 메뉴 수량 조절 시 인덱스 오류가 발생함. - 클로저 내에서 indexPath.row를 직접 참조하여 변경 시, TableView가 재로드되는 동안 인덱스가 업데이트되지 않아 문제 발생.

 


회고

더보기

깃허브를 통한 협업이 처음이라 쉽지 않았다. 그로인해 팀원들과의 협업에서 브랜치 관리, 코드 충돌 해결에 어려움을 겪었다. 하지만 그 경험을 통해 깃허브로 협업하는 방법을 배웠고 중요성을 알 수 있었다. 프로젝트를 진행하면서 전체적인 구조를 파악하는 것이 얼마나 중요한지 깨달았다. 처음에는 코드 한 줄 한 줄을 작성하고 수정하는 데에만 집중했었는데, 그 과정에서 전체적인 프로젝트 구조를 간과했다. 하지만 협업하면서 다른 개발자들과의 커뮤니케이션, 코드 리뷰, 그리고 기능을 통합하는 과정에서 전체적인 구조를 이해하는 것이 매우 중요하다는 것을 깨달았다.

'Dev > SWIFT' 카테고리의 다른 글

[Swift] URL 구성요소  (1) 2024.01.04
[Swift] struct와 class  (1) 2024.01.03
[Swift] Kiosk 팀 과제  (0) 2023.12.27
[Swfit] todoList 과제  (0) 2023.12.20
[Swfit] Combine 도구  (0) 2023.12.18