[swift] FSCalendar에서 특정 날짜의 이벤트 액션 앱 설정

FSCalendar는 Swift로 작성된 iOS 앱에서 사용할 수 있는 유용한 라이브러리입니다. 이전 포스트에서 FSCalendar를 사용하여 달력을 만들고, 특정 날짜에 이벤트를 표시하는 방법을 알아보았습니다. 이번 포스트에서는 특정 날짜를 선택하면 해당 이벤트에 대한 앱 내부 기능을 실행하는 방법에 대해 알아보겠습니다.

1. FSCalendarDelegate 프로토콜 구현하기

우선 FSCalendarDelegate 프로토콜을 구현하여 선택한 날짜에 대한 이벤트를 처리하는 코드를 작성해야 합니다. 아래의 예시 코드를 참고하여 구현해 보세요.

import FSCalendar

class ViewController: UIViewController, FSCalendarDelegate {
    @IBOutlet weak var calendar: FSCalendar!

    override func viewDidLoad() {
        super.viewDidLoad()
        
        calendar.delegate = self
    }
    
    func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
        // 선택한 날짜에 대한 앱 내부 기능을 실행하는 코드를 작성하세요
    }
}

2. 앱 내부 기능 실행하기

calendar(_:didSelect:at:) 메서드 내에서 선택한 날짜에 대한 앱 내부 기능을 실행하는 코드를 작성해야 합니다.

예를 들어, 특정 날짜에 대한 이벤트가 알림을 생성하는 기능을 수행한다고 가정해 봅시다. 아래의 예시 코드는 선택한 날짜에 대해 알림을 생성하는 기능을 구현한 코드입니다.

func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
    createNotification(for: date)
}

func createNotification(for date: Date) {
    let content = UNMutableNotificationContent()
    content.title = "이벤트 알림"
    content.body = "선택한 날짜에 이벤트가 있습니다."
    
    let calendar = Calendar.current
    let components = calendar.dateComponents([.year, .month, .day, .hour, .minute], from: date)
    let trigger = UNCalendarNotificationTrigger(dateMatching: components, repeats: false)
    
    let request = UNNotificationRequest(identifier: "eventNotification", content: content, trigger: trigger)
    UNUserNotificationCenter.current().add(request) { (error) in
        if let error = error {
            print("알림 생성 실패: \(error)")
        }
    }
}

위의 코드에서 createNotification(for:) 메서드는 선택한 날짜에 대해 알림을 생성하는 기능을 수행합니다. 특정 날짜에 대한 앱 내부 기능을 실행하는 코드는 프로젝트의 요구사항에 따라 다르게 구현할 수 있습니다.

참고 자료