[swift] FSCalendar에서 다른 달의 날짜 클릭 시 액션 설정

FSCalendar는 iOS를 위한 사용자 정의 가능한 캘린더 뷰이며, 다른 달의 날짜를 클릭할 때 실행될 액션을 설정하는 방법을 알아보겠습니다.

FSCalendar 델리게이트 사용하기

FSCalendar의 다른 달의 날짜 클릭 이벤트를 처리하기 위해 FSCalendarDelegate를 사용할 수 있습니다.

먼저, FSCalendarDelegate 프로토콜을 사용하려면 해당 클래스에 델리게이트를 지정해야 합니다. 아래와 같이 UIViewController에서 FSCalendarDelegate를 채택하고 델리게이트를 설정합니다.

class YourViewController: UIViewController, FSCalendarDelegate {
    // ...
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        calendar.delegate = self
    }
    
    // ...
}

다른 달의 날짜 선택 이벤트 처리하기

FSCalendarDelegate 프로토콜을 사용하여 다른 달의 날짜를 선택할 때 발생하는 이벤트를 처리할 수 있습니다. FSCalendarDelegate에는 calendar:didSelectDate:atMonthPosition: 메소드가 있습니다. 이 메소드는 캘린더에서 날짜를 선택할 때 호출됩니다.

다른 달의 날짜를 선택할 때 액션을 수행하려면 calendar:didSelectDate:atMonthPosition: 메소드를 다음과 같이 구현합니다.

class YourViewController: UIViewController, FSCalendarDelegate {
    // ...
    
    func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
        if monthPosition == .previous || monthPosition == .next {
            // 다른 달의 날짜를 선택한 경우 실행될 액션을 작성하세요.
            print("다른 달의 날짜를 선택했습니다.")
        }
    }
    
    // ...
}

위의 예제에서는 monthPosition 매개변수를 사용하여 선택한 날짜가 현재 월의 날짜인지 다른 달의 날짜인지 확인합니다. monthPosition 값이 .previous 또는 .next인 경우 다른 달의 날짜를 선택한 것입니다. 액션으로 수행할 내용을 해당 조건문 안에서 작성하세요.

이제, FSCalendar에서 다른 달의 날짜를 선택했을 때 원하는 액션을 설정할 수 있게 되었습니다.

참고 자료