Skip to content

Conversation

@OpenBible3438
Copy link

스텝별 작업목록

  • NavigationBar 적용
  • Menu 출력 DataModel 생성
  • 유형별 Cell 생성
  • TableView 각 Section Cell 적용
  • MVC 구조 변경
  • 공통 코드 분리

학습키워드

TableView, Section, TableViewCell, Xib

고민과 해결

Cell

  • Cell의 유형별로 Xib 파일을 생성따로 생성해서 적용했습니다.
  • 최상단에 있는 ProfileCell, 메뉴와 See More... Add Favorites...을 표현할 MenuCell, 그리고 마지막 LogoutCell로 구성해서 적용했습니다.

Section

  • Model을 2차원 배열로 만들어서 데이터를 추가했습니다.
  • 지금 작성하면서 든 생각은,, 예전에 회사에서 메뉴 구조를 구현한 적이 있는데 DB에 depth 컬럼이 있어서 서버에서 메뉴 구조를 불러오고 Depth별로 출력했던 것 같습니다. 저는 2차원 배열로 Section을 나누었지만, 현업이라면 Section 데이터도 함께 불러올 것 같다는 생각이 듭니다.

MVC 패턴 적용 (step2 반영 예정) -> 반영 완료

  • Cell 파일을 여러 개 생성하다 보니 구조를 잡는 것이 좋을 것 같습니다.

공통 코드 분리 (step2 반영 예정) -> 반영 완료

  • 규모가 큰 프로젝트가 아니라 따로 뺄 코드가 많은 건 아니지만, UIColor 코드가 길게 여러 개 있는 것이 썩 깔끔해보이지 않아서 색상 코드를 따로 정의해두는 파일을 만들어야 될 것 같습니다.

  • 다음 프로젝트 진행 때는 이렇게 프로젝트 전반적으로 사용하는 코드들은 미리 빼두는 습관을 들여야겠습니다.

  • (반영 내용) 앱 내에서 자주 사용하는 코드들을 모아놓는 방법은 여러가지가 있는데 이번에는 색상 하나를 추가하는 것이라 UIColor에 Extension을 추가하는 방법을 선택했습니다. 레퍼런스도 이렇게 했더라구요.

  • 처음 GPT에게 방식을 물어봤을 때 파일명을 "UIColor+CustomColors.swift", "UIColor+Custom.swift", "UIColor+Extensions.swift"와 같은 네이밍을 사용할 수 있다고 하더라구요. Objective-C에서는 Extension과 비슷한 카테고리라는 개념을 사용했는데 이 때 "클래스명+카테고리명" 형식으로 네이밍했던게 그대로 이어진 것 같습니다. 새로운 걸 알아갑니다😀

@AKAPUCH
Copy link
Contributor

AKAPUCH commented Jun 4, 2023

수고하셨습니다!
코드 UI를 의도한 프로젝트긴 하나 xib로 셀 하나하나를 분리하는 방식이 저는 재사용성 측면에서 좀 더 와닿았던 것 같네요.
fb_placeholder asset(공백 이미지)를 미사용하셔서 조금 의아했으나 이미지 유효성 체크 로직을 구현하셔서 실제 앱에서 데이터 로드에 실패했을 때 대비할 수 있을 것 같습니다.

다만 파일 계층을 분리할 때 ViewController와 Controllers를 따로 생성하셨던데, 이건 특별한 이유가 있을까요?
Controllers 계층에는 AppDelegate, SceneDelegate 파일이 속해있어 어떤 기준으로 나누신건지 궁금합니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants