Skip to content

wafflestudio21-5/team1-iOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

Team1: Watomate

친구들과 투두를 공유하는 앱, 투두메이트를 클론 코딩했습니다

  • 작성한 소스코드는 watomate/Watomate/Sources 안에서 볼 수 있습니다

Built With

이지현 (JH713) 이수민 (cirtuare) 권현구 (h9kwon)
로그인, 서치탭 담당 홈 탭, 다이어리, 팔로우 담당 프로필 탭, 투두리스트 담당

프로젝트 뷰 및 기능 소개

1. 회원가입 및 로그인

  • 이메일 회원가입, 로그인과 카카오 로그인, 게스트 로그인이 가능하도록 했습니다.

2. 홈 탭

  • 홈 탭 우측 상단의 더보기 버튼을 탭하면 목표를 추가하거나 편집할 수 있습니다.
  • 홈 탭 상단에서 팔로잉하는 사람의 목록을 볼 수 있습니다.
  • 팔로우 버튼을 탭할 시 팔로우 탭으로 이동하고, 팔로잉/팔로워 목록을 편집할 수 있습니다.
  • 팔로우 탭에서 타 유저의 프로필을 탭하면 타 유저의 프로필 화면으로 이동합니다. 타 유저의 프로필 화면에서는 유저 정보 및 오늘의 투두를 조회할 수 있고, 팔로잉/팔로우 여부를 편집할 수 있습니다.
  • 캘린더의 날짜를 선택하고 다이어리 버튼 클릭 시, 해당 날짜에 다이어리가 없다면 다이어리 생성 화면으로 이동합니다. 해당 날짜에 다이어리가 생성되어 있다면 다이어리 조회 및 수정 화면으로 이동합니다.
  • 캘린더의 각 날짜 밑에는 각 날짜의 투두를 모두 완료했다면 체크표시가, 아니라면 남은 투두의 개수가 나타납니다.
  • 선택된 날짜에 해당되는 투두들은 목표에 따라 나누어져 있고, 목표를 탭하여 목표에 해당 날짜의 투두를 추가할 수 있습니다.
  • 투두에 알림이 설정되어있거나 메모가 존재할 경우 제목 밑에 나타납니다.
  • 각 투두들을 탭하면 투두를 편집할 수 있는 화면이 올라오며 수정, 삭제, 메모 추가, 알림 설정, 사진 인증(투두 완료 시), 날짜 지정 및 변경, 보관함으로 이동(날짜 삭제 기능, 투두 미완료시에만 보임) 등을 할 수 있습니다.
  • 투두를 완료했을 경우 사진인증을 할 수 있습니다.

목표 관리

  • 목표를 관리하고 수정 및 새 목표를 추가할 수 있습니다.

팔로우

  • 팔로잉/팔로워 목록을 조회하고 유저 언팔로우 및 팔로워 삭제를 할 수 있습니다.
  • 유저 프로필 클릭 시 유저의 할 일 화면으로 이동합니다.

다이어리

  • 다이어리 생성 화면에서 이모지, 공개설정, 다이어리 내용, 배경 색상, 마음 온도를 설정할 수 있습니다.

3. 검색 탭

계정

  • 기본 화면에서 게스트를 제외한 모든 계정을 볼 수 있습니다.
  • 검색어를 입력하면 검색어를 포함하는 모든 계정을 볼 수 있습니다.
  • 계정을 클릭하면 해당 계정의 오늘의 투두를 보여주고, 팔로우할 수 있는 버튼을 보여줍니다.

할 일

  • 기본 화면에서 게스트를 제외한 모든 계정의 할 일(전체공개)을 볼 수 있습니다.
  • 검색어를 입력하면 검색어를 포함하는 모든 할 일을 볼 수 있습니다.

일기

  • 게스트 계정을 제외한 모든 계정의 일기(전체 공개)를 볼 수 있습니다.
  • 일기에 댓글과 좋아요룰 작성할 수 있습니다.

4. 프로필 탭

  • 유저정보(유저네임, 프로필 사진, 팔로워 수, 팔로잉 수) 및 보관함에 들어있는 투두들이 보이도록 했습니다.
  • 나의 인증샷에 들어가면 업로드한 인증샷들을 날짜별로 볼 수 있습니다.
  • 보관함에 들어있는 투두들은 홈탭의 투두들과 동일한 양식으로 나타나되, 날짜가 지정되어있지 않은 투두들만 보여지고 날짜 설정 시 보관함에서 사라지게 됩니다.
  • 각 투두들을 탭하면 투두를 편집할 수 있는 화면이 올라오며 수정, 삭제, 메모 추가, 알림 설정, 날짜 지정 및 변경 등을 할 수 있습니다.
  • 수정을 완료하면 프로필 탭으로 돌아가며, 수정사항이 즉시 반영되어 나타납니다.
  • 설정 버튼을 누르면 계정 설정 화면으로 이동하고 프로필 설정, 로그아웃, 계정삭제 등을 할 수 있습니다.

어려웠던 부분

투두 테이블뷰의 재사용

  • 배경
    • 투두들을 보여주는 테이블뷰가 홈 탭과 프로필 탭에서 UI는 서로 유사하지만 차이점이 존재했는데, 처음에 각 탭을 분리하여 개발하다보니 프로필 탭에서 먼저 테이블뷰를 개발할 때는 홈 탭에서 사용할 것을 제대로 대비하지 못해 합칠 때에 두 탭의 투두 테이블 뷰의 차이점을 적용할 때에 어려움을 겪었습니다.
  • 문제점
    • 홈 탭에서는 각 날짜에 해당하는 투두만을 보여주고, 프로필 탭에서는 날짜가 지정되지 않은 투두만을 보여줘야 하기에 뷰모델에 들어갈 데이터가 달랐습니다.
  • 해결책
    • 투두 테이블뷰의 공통 기능을 담당하는 TodoTableViewController를 만들고 차이나는 부분은 HomeViewController와 ProfileViewController에서 각각 TodoTableViewController를 상속하여 다르게 overriding을 하고, 여기에 들어가는 TodoListViewModel을 서로 다른 인스턴스를 주입하여 두 탭에서 서로 다른 데이터를 보여주도록 했습니다.
  • 개선 가능성
    • 현재는 두 탭에서 ViewModel은 같은 클래스의 서로 다른 인스턴스를 사용했기에 한 탭에서 데이터가 수정된 것을 다른 탭에서 바로 인식하지는 못하고, 이로 인해 탭 간 이동시마다 새로 데이터를 불러오는 API를 호출하도록 구현했습니다.
    • 구현하지는 못했지만, 이를 대신해 동일한 뷰모델 인스턴스를 사용하여 하나의 탭에서 데이터가 수정될 때 다른 탭에도 combine으로 전달해 주도록 개선할 수 있을 것 같습니다.
  • 느낀 점
    • 클래스를 구현할 때 항상 확장 가능하고, 재사용 가능하도록 구현하는 것이 중요함을 배울 수 있었습니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published