그룹프로젝트 #2
panther222128 / sidedish Goto Github PK
View Code? Open in Web Editor NEWThis project forked from codesquad-members-2021/sidedish
그룹프로젝트 #2
This project forked from codesquad-members-2021/sidedish
그룹프로젝트 #2
중 하나 택하겠지만, 아직 각각의 장단점도 파악 못했습니다...
그래서 일단 상황 공유해드리고~
조금 더 파악 후에, edit 해서 장단점 및 의견 공유해볼게용!
아래 gif에서 보이는 것처럼 Toast 구현 성공
TableView의 Header와 ViewController의 View에서도 출력하도록 함
CustomTableViewHeaderFooterView라는 UITableViewHeaderFooterView를 서브클래싱한 객체에서 아래 함수를 추가
// GestureRecognizer를 추가, target이 self이므로 Header가 Gesture를 인식함
private func configureToast() {
let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(headerTap))
self.addGestureRecognizer(tapRecognizer)
}
// Tap이 발생하면 Header(self, 즉 자신이 toast를 만들기 때문)가 "토스트 생성" String을 출력함
// 동시에 입력받았다는 신호를 Notification을 통해 ViewController에게 전달
@objc func headerTap() {
self.makeToast("토스트 생성")
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "ToastButton"), object: nil)
}
// Notification Observer 추가
private func tableViewHeaderObserber() {
NotificationCenter.default.addObserver(self, selector: #selector(toast), name: NSNotification.Name(rawValue: "ToastButton"), object: nil)
}
// ViewController가 가지고 있는 ViewModel 내 데이터의 개수를 출력함
@objc func toast() {
self.view.makeToast("\(ohMyGirl.ohMyGirl.count)")
}
반영 필요
저장소는 Cri의 저장소에 두고 develop 브랜치 생성 후 하위 브랜치를 생성해 작업하기로 함
realm을 학습하고 활용하기로 함
DiffableDataSource를 학습하고 스토리보드 사용 혹은 스토리보드와 XIB 사용 사이에서 적합한 방식을 선택하기로 함
DiffableDataSource 활용 관련
첫 번째 View, 즉 Main 화면에서 View의 구현 시 스토리보드를 활용, 코드를 통해 구현, XIB를 활용할지 결정 필요
스토리보드와 XIB 활용으로 결정
Main과 상품 상세 두 가지 중 한 가지씩 맡기로 결정, Lia가 Main을 맡고 Cri가 상품 상세
XIB를 활용해 XIB에 View 요소를 추가하고 View 요소에 필요한 값을 주입할 때 'unexpectedtly found nil' 에러가 발생함
찾아본 결과 XIB의 Layout을 결정하지 못해 컴파일 시 XIB가 존재하는지 아닌지 여부에 대해 존재하지 않는다는 판단으로 XIB의 View 요소는 존재하지 않음
달리 표현하면 Collection View에서 Cell의 개수는 정확하게 표현하고 있지만 Cell 내의 View 요소를 표현하지 못함
즉 Cell 내의 View 요소의 Layout이 결정되지 않아 컴파일에서 nil 상태로 반환하는 것으로 보임
프로젝트의 빠른 진행을 위하려면 Programmatically 혹은 only Storyboard 활용이 필요하다고 보임
그 이유는 DiffableDataSource에서 XIB를 활용하는 것이 까다롭고 예시마저 검색 시 드물게 보임
참고 링크
https://zeddios.tistory.com/1197
https://stackoverflow.com/questions/55640408/xibs-iboutlets-returning-nil-when-using-xib-in-storyboard
https://stackoverflow.com/questions/52066101/cannot-create-a-custom-view-using-xib-file-due-to-nil-subviews
느낀점: 아래 링크처럼 XIB를 간략하게 사용해볼 수 있겠지만 Layout 설정 등 까다로운 작업이 요구되므로 깊이있는 이해가 필요함
https://velog.io/@panther222128/UICollectionView-with-XIB-Practice
해결: 스토리보드 내 CollectionView에서 Cell의 사이즈를 Custom으로 설정
CollectionView의 DiffableDataSource를 이용해 구현하던 중이었으나 애플이 제공하는 Sample Code 및 기타 자료를 통해 DiffableDataSource의 이점은 Section의 구분에서 각각 다른 View를 포함할 때 의미가 있다고 이해했음 -> ScrollView로 전환
https://www.youtube.com/watch?v=MXJffcoWRlw&t=537s
https://www.youtube.com/watch?v=X2Wr4TtMG6Q&t=648s
ViewController에 ScrollView를 채우고 ScrollView 내부에 1) 상품 이미지를 나타내는 ScrollView, 2) 상품 상세, 배송정보, 주문 수량, 주문정보의 View를 담는 네 개의 ContainerView, 3) 상품 상세 설명 이미지를 나타내는 UIImageView를 갖는 Hierarchy
가장 하위의 ContainerView 네 개는 그 안에 세부 View를 포함
전반적인 요소는 추가했으나 다음을 반영해야 함
추가로 반영된 사항
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.