[iOS] 시간표 프로젝트 - 7

한지석·2022년 2월 3일
0

iOS

목록 보기
7/12
post-thumbnail

이번에 소개할 내용은 ..
-> 강의들을 보여주는 테이블 뷰에서 학년으로 구분해서 해당 학년 수업만 불러와지는 기능 / tableView 선택 시 해당 수업 정보 출력해주는 기능을 소개하겠다.

데이터 필터링

나는 데이터를 불러올 때 클래스에 배열 선언 후 내부 DB의 데이터를 배열에 append 해주는 방법을 사용했다.
먼저 UI를 살펴보자면 이러하다.

처음 화면엔 모든 강의 데이터들이 불러와지고, 학년 선택 시 ..

이렇게 해당 학년의 강의 데이터만 불러와지는 모습이다.
이렇게 필터링해주는 기능을 구현할 때 상당히 머리가 아팠다. 그 이유는..

realm 기능

중 필터링 기능이 동작하지 않았다.. 계속 저번에 포스팅했던 오류인 EXC_BAD_ACCESS가 출력되는 바람에 아예 방향을 바꾸느라 애먹었다. 그 전에 유저의 학년 선택값을 받아주기 위해 Dropdown을 사용해서 학년 필터링을 진행해주었다.

내 생각은 이렇다.
1. 먼저 모든 시간표 데이터를 불러온다.
2. 이후 유저가 학년을 고를 시 강의가 저장된 배열을 모두 삭제한 후 해당 학년에 해당하는 데이터만 배열에 다시 삽입해준다.
3. 유저가 다른학년을 고른다면 해당 동작을 반복한다.
위의 생각대로 기능을 구현해보았다.
1번은 저번 포스팅대로 구현하면 가능했고, 그 이후는!



학년을 골랐을 시 진행되는 코드. 먼저 배열 내용 모두 삭제 후 다시 해당학년 데이터를 불러온다.

강의 선택 시..

이런식으로 과목, 교수, 장소를 넘겨주어 화면에 출력해주었다.
그 전에 tableView cell을 클릭해도 무반응이었는데.. 그 이유는 이 기능을 구현하기 전에 cell을 클릭하면 회색빛이 돌아서 구글링했다가 storyboard에서 selection을 no selection으로 설정했었던 것이 문제였다..! single selection으로 설정 후 진행하니 문제없이 진행되었다. 그리고 그 클릭 색깔은 cellForRowAt 내부에
let bgColorView = UIView()
bgColorView.backgroundColor = UIColor.white
cell.selectedBackgroundView = bgColorView
을 사용해주면 된다.

그리고 셀 클릭 시 화면이 넘어가는 기능은 didSelectedRowAt에서 해당 동작을 입력해주면 된다. 나는 navigation controller로 화면을 전환하기 때문에 다음 화면으로 pushViewController 해주었다.

오늘 포스팅은 여기까지.. 다음 시간에는 시간표를 추가하는 기능 구현 후 포스팅 예정이다. 아마 이 기능만 해결된다면 75퍼센트는 완성일 것 같다.

profile
한지석일대기

0개의 댓글