2차 평가과제

주방·2022년 9월 5일
0

Swift

목록 보기
16/17
post-thumbnail

과제 내용 검토

  1. 기간: 22. 8. 31 - 9. 5(월)
  2. 과제 제출 방법: GitHub Private Repository(완료)
  3. 작성 조건
    1. 아이폰 용, 최소버전 13.0(완료)
    2. 코드베이스(진행)
    3. 다크모드, 라이트모드 체크(추후검토)
    4. Realm
    5. Singleton / Repository Pattern
      1. Singleton Pattern
      2. Repository Pattern
    6. BaseViewController
    7. final
    8. access control
    9. 공수산정
  4. 뷰의 구성(3개)
    1. 최초 팝업화면
    2. 메모 리스트 화면
    3. 검색 화면
    4. 작성 및 수정 화면
  5. 각 뷰의 역할(20)
    1. 최초 팝업화면(2)
      1. 첫화면 메모리스트 화면 위에서 팝업 화면(walkthrough) 띄워주기
      2. 최초 1회만 뜨고, 이후에 뜨지 않음.
    2. 메모 리스트 화면(18)
      1. Large size Navigation Controller
        1. 메모갯수 1000개 넘어갈 경우, 3자리마다 콤마(,) 추가
        2. NumberFormatter
      2. 정렬 - 최신순
      3. SearchBar
      4. 2개의 섹션(1. 고정된 메모, 2. 메모)
      5. 우측 하단 메모 작성 버튼 푸시(다음 뷰 이동)
      6. 메모 - 데이터(realm) 표시
      7. 메모 - 왼쪽 슬라이드 고정 핀
      8. 메모 - 오른쪽 슬라이드 데이터 삭제
      9. 메모 - 리스트 표시 내용(제목, 내용, 날짜)
      10. 메모 - 리스트, 날짜 조건(오늘, 이번주, 그외 조건 3가지)
      11. 고정된 메모 - 최대 5개까지 고정
      12. 고정된 메모 - 최신순 정렬
      13. 고정된 메모 - 5개이상 고정할 경우 알럿으로 불가 메세지
      14. 고정된 메모 - 고정된 메모가 없으면 섹션 없음
      15. 고정된 메모 - 왼쪽 슬라이드 고정핀에서 값이 바뀌면 메모의 특정 bool값이 변경되어 표시된다.
      16. 고정된 메모 - 왼쪽 슬라이드 고정 핀 해제
      17. 고정된 메모 - 오른쪽 슬라이트 데이터 삭제
    3. 검색 화면(6)
      1. 서치바 버튼을 클릭하면 Present로 검색상태 + 키보드 올라옴
      2. 검색된 데이터 갯수 확인 후 제목 값의 변경
      3. 실시간 검색
        1. 텍스트 변경될 때마다 자동으로 검색 진행
      4. 검색 키워드에 해당하는 단어 - 텍스트 컬러 변경
      5. 메모 고정, 삭제 등 검색 기능에서 적용 가능
      6. 셀 클릭시 메모 수정화면으로 이동
    4. 작성 및 수정 화면(6)
      1. 메모리스트 - 버튼 클릭 후 표시

      2. 푸시 화면 - 네비게이션 바(왼쪽 아이템 1, 오른쪽 아이템 2)

      3. 작성 및 수정화면 - 메인 뷰 클릭 후 키보드 업

      4. 메모 작성 시 내려가는 것 확인

      5. 완료 버튼 클릭 후 키보드 다운

      6. 공유 버튼 클릭 후 동작

        8월 31일 수행 내역

      • GitHub private Repository complete

      • 과제분석

        9월 1일 수행내역

      • 아이폰 용, 최소버전 13.0

      • 라이브러리 설치(Realm, Snapkit)

      • 폴더 분할(Base, Write, Search, List, Realm, Transition, Protocol)

      • 다크모드, 라이트모드 설정 / 각 뷰를 만들어 하나의 상태를 표현할 수 있도록 해야함.

      • Singleton(하나의 클래스인스턴스를 여러 뷰컨에서 접근해 사용할 수 있는 패턴) / Repository Pattern(CRUD 작업시 여러 뷰컨에서 작업하는데, 이것을 한곳으로 묶어준다.)

      • Large size Navigation Controller

      • BaseViewController 세팅

      • 테이블 뷰(https://duwjdtn11.tistory.com/560)

      • 테이블 뷰 섹션별 데이터 표시 방법(https://gigas-blog.tistory.com/46)ㅁ

        데이의 표시가 이뤄지고 있지만, 뷰의 디테일한 부분이 해결되지 못하고 있다.

        이를 우선적으로 searchViewController로 이 부분을 해결하고 데이터가 입력되었을 때, 표시하는 부분을 적용시켜야 할 것 같다.

        9월 2일 수행내역

      • search TextField 삭제

      • searchViewController 추가

      • 추가된 searchBar text 내용확인

      • ui 문제(메모의 contentview, cell의 cornerradius  어떻게 줄지?, totalview내 들어간 3개의 라벨(title, content, date) 내부 패딩 어떻게 줄지?)

      • 우측하단에 툴바컨트롤러 어떻게 넣어줄지(https://woongsios.tistory.com/44)

        • 이미지 및 위치 추가 수정
      • write view에서 작성한 메모를 list에서 어떻게 보여줄까?

        9월 3일 수행내역

      • 툴바오른쪽으로 몰아넣기

      • 툴바 버튼 클릭하면 작성/수정화면 가기

      • 뷰 누르면 키보드 올라오기

      • 공유하기

      • 완료버튼

      • 왼쪽 버튼(간격 좁히기), 오른쪽 버튼(공유, 저장) ui 추가

        • 각 버튼별 기능 넣기
      • 스택뷰 내 2개의 textfield 구성(view 하나로 묶음)

      • 구성된 textfield return을 입력할 경우 아래의 텍스트 필드로 이동(문자열을 “\n”을 기준으로 나눠버림)

      • 네비게이션 바 간격을 어떻게 해결해야할지 고민됨,,,

      • leading slide 구현

        9월 4일 수행내역

      • true일 경우에 고정된 메모에 넣고, false인 경우에 메모에 넣기

      • 메모데이터 삭제, 구별 버그 수정

      • 작성 - 우측 상단 공유버튼 클릭 후 공유

      • 작성 - 백버튼 + 저장버튼 추가

        9월 5일 수행내역

      • 메인화면 row 선택시 수정화면 전환

      • 서치뷰(전환까지)

      • 데이트 날짜 반영

      • 초기화면

      • 하나씩 추가되기!


회고

3개의 뷰를 갖고 있는 메모앱 프로젝트를 수행하였습니다. 각 뷰가 가지고 있는 기능은 다양하지 않았지만, 기한 내 모든 기능을 수행하지 못했습니다. 프로젝트 수행에 있어 정해진 기한을 가지고 공수를 산정했을 때, 시간적 여유는 충분할 것으로 판단되었습니다. 그러나 막상 프로젝트 수행 시 세부 기능 구현에 소요되는 시간이 짧게는 2배, 길게는 10배까지도 소요됨을 경험하였습니다. 큰 틀에서 기능 구현을 우선적으로 작성 후 관계된 세부 요소들을 수정하면 될 것이라 생각했습니다(큰틀 - 3개의 뷰의 구조, 데이터 구조, 기본적인 UI). 그러나 큰 틀을 잡는 것도 시간 소요도 상당했으며, 큰 틀이 잡히지 않으니 한개의 뷰도 온전하게 구현하지 못함을 경험했습니다. 오히려 작업이 중구난방으로 진행된 것 같아 앞으로 작업 방식을 바꿔야겠다 생각했습니다.

코드를 보면 각 ViewController에서 작업이 전부 이뤄지고 있습니다. 단순히 기능구현만 하는 것이 아니라, 보다 기능이 잘게 쪼개 코드를 구현해야겠다 느꼈습니다.

0개의 댓글