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

FSCalendar는 iOS에서 사용할 수 있는 유명한 달력 라이브러리입니다. 이 라이브러리를 사용하여 특정 날짜에 이벤트를 추가하고 해당 이벤트를 탭할 때 앱 내비게이션을 설정하는 방법을 알아보겠습니다.

1. FSCalendarDelegateImpl 클래스 생성하기

FSCalendar의 delegate를 구현하기 위해 FSCalendarDelegateImpl라는 클래스를 생성합니다. 이 클래스는 FSCalendarDelegate 프로토콜을 채택하고, 이벤트 액션을 처리할 메소드를 구현합니다.

import FSCalendar
import UIKit

class FSCalendarDelegateImpl: NSObject, FSCalendarDelegate {
    
    let viewController: UIViewController
    
    init(viewController: UIViewController) {
        self.viewController = viewController
    }
    
    func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
        // 선택한 날짜의 이벤트 액션 처리
        if date == YOUR_SPECIFIC_DATE {
            // 해당 날짜에 대한 앱 내비게이션 설정
            let destinationViewController = YourViewController()
            viewController.navigationController?.pushViewController(destinationViewController, animated: true)
        }
    }
}

위 코드에서 YOUR_SPECIFIC_DATE는 내비게이션을 설정하고자 하는 특정 날짜를 나타냅니다. 첫 번째 파라미터인 calendar은 FSCalendar 인스턴스를 나타내며, 두 번째 파라미터인 date는 선택한 날짜를 나타냅니다. 따라서 선택한 날짜와 YOUR_SPECIFIC_DATE를 비교하여 내비게이션을 설정할 수 있습니다.

2. FSCalendarDelegate 설정하기

FSCalendarDelegateImpl 클래스를 생성한 후, 해당 클래스를 FSCalendar 인스턴스의 delegate로 설정해야 합니다. 이를 위해 해당 뷰 컨트롤러에서 FSCalendar 인스턴스를 초기화하고 delegate를 설정하는 코드를 작성합니다.

import FSCalendar
import UIKit

class YourViewController: UIViewController {

    var calendar: FSCalendar!
    var calendarDelegate: FSCalendarDelegateImpl!

    override func viewDidLoad() {
        super.viewDidLoad()

        calendar = FSCalendar(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: 300))
        calendar.delegate = calendarDelegate
        view.addSubview(calendar)
        
        calendarDelegate = FSCalendarDelegateImpl(viewController: self)
        calendar.delegate = calendarDelegate
    }
    
    // ...
    
}

위 코드에서 YourViewController는 FSCalendar를 표시할 뷰 컨트롤러입니다. calendar 속성은 FSCalendar 인스턴스를 나타내고, calendarDelegate 속성은 FSCalendarDelegateImpl 인스턴스를 나타냅니다. calendarDelegate 속성을 먼저 초기화한 후 calendar.delegate에 설정해줘야 합니다.

이제 선택한 특정 날짜를 YOUR_SPECIFIC_DATE와 비교하여 내비게이션을 설정하는 코드가 작동됩니다.