FSCalendar를 수업시간에 다뤄보았습니다.
FSCalendar의 기본적인 내용은 아래의 공식 github에서 확인할 수 있습니다ㅏ.
https://github.com/WenchaoD/FSCalendar
Realm에 저장한 일기 데이터를 가져와서 언제 일기를 썼는지 알려주려고 합니다.
extension CalendarViewController: FSCalendarDelegate, FSCalendarDataSource {
func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int {
return tasks.filter("writeDate = %@", date).count
}
}
FSCaledar 부분은 extension으로 묶어서 처리해주었습니다.
시뮬레이터로 빌드한 모습입니다.
numberOfEvents를 통해 날짜별로 일기 갯수를 보여줍니다.
날짜 밑에 생긴 작은 동그라미가 FSCalendar의 event입니다.
날짜별로 최대 3개의 event를 표현할 수 있습니다.
오늘 생긴 문제는 처음에 앱을 빌드하고, 앱 내에서 새로운 데이터를 저장했을때 그 내용이 FSCalendar에 반영이 안되는 것이었습니다.
TableView와 비슷한 방식으로 문제를 해결할 수 있었습니다.
바로 reloadData입니다.
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print(#function)
calendarView.reloadData()
let allCount = getAllDiaryCountFromUserDiary()
allCountLabel.text = "총 \(allCount)개를 썼다."
}
ViewController에 viewWillAppear를 정의해주고, 그 안에 calendarView.reloadData()를 붙여주었습니다.
그리고 label도 하나 있기 때문에, label도 같이 업데이트를 해주었습니다.
reloadData()를 해주고 나면 realm에 데이터를 추가하거나 삭제한 것이 바로바로 반영되는 것을 볼 수 있습니다.