일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 배열 만들기1
- 스파르타코딩캠프
- 프로그래머스 주사위 게임1
- 프로그래머스
- 주사위 게임1
- 프로그래머스 배열 만들기1
- 문자열 정렬하기 (1)
- swift
- 프로그래머스 n번째 원소까지
- 조건에 맞게 수열 변경하기 3
- cocoapods 설치 오류
- 문자열 붙여서 출력하기
- 프로그래머스 조건에 맞게 수열 변경하기 3
- Break
- 프로그래머스 자동커밋
- 프로그래머스 최댓값 만들기(2)
- 스파르타 코딩클럽 내일배움캠프
- 프로그래머스 문자열 붙여서 출력하기
- Til
- Error installing cocoapods
- 스페인어
- ruby설치
- n번째 원소까지
- 객체지향
- 프로그래머스 문자열 정렬하기 (1)
- array
- 프로그래머스 n의 배수 고르기
- 연산자
- continue
- 프로그래머스 암호 해독
- Today
- Total
dev._.note
[Swift] Kiosk 팀과제 2 본문
화면 구성 내용
제목 : 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원
- 총 주문 내역 (개수 / 금액)
- 주문 리스트 반영 화면
- 취소하기, 결제하기 버튼
역할 분담
메뉴 카테고리 바 (CategoryViewController) |
주문 내역 확인 (ListViewController) |
메뉴 화면 (MenuViewController) |
부가 기능 (이미지) (ImageViewController) |
취소/결제 버튼 화면 (PayViewController) |
타임라인
- 12월 26일
- 역할 분담
- 변수명 통일
- 12월 27일
- 개인 코드 작업
- 깃허브 브랜치 생성
- 12월 28일
- 개인 코드 작업
- 개인 코드 연결을 위한 push 및 오류 확인
- 12월 29일
- 개인 코드 작업
- 충돌 오류 해결
- 12월 30일
- 개인 코드 연결
- merge시 오류 확인
- 1월 1일
- 코드 연결 마무리 작업
- 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 |