[swift] FSCalendar에서 이벤트 수정 기능

FSCalendar은 SwiftUI에서 많이 사용되는 캘린더 라이브러리이다. 이 라이브러리를 사용하면 앱에서 간편하게 캘린더 기능을 구현할 수 있다. 이번에는 FSCalendar에서 이벤트를 수정하는 기능을 개발해보도록 하겠다.

1. 이벤트 수정 버튼 추가하기

일단 FSCalendar에 이벤트 수정 버튼을 추가해야 한다. FSCalendar은 UICollectionView를 기반으로 하기 때문에, cellForItemAtIndexPath 메소드에서 버튼을 추가할 수 있다. 다음은 이벤트 수정 버튼을 추가하는 코드이다.

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    // 이벤트 수정 버튼을 추가할 셀을 가져온다.
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! CalendarCell
    
    // 이벤트 수정 버튼을 생성한다.
    let editButton = UIButton(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
    editButton.setImage(UIImage(named: "edit_icon"), for: .normal)
    editButton.addTarget(self, action: #selector(editButtonTapped), for: .touchUpInside)
    
    // 셀에 버튼을 추가한다.
    cell.addSubview(editButton)
    
    return cell
}

위 코드에서 “edit_icon”은 이벤트 수정 버튼에 표시할 아이콘의 이미지 이름이다. 프로젝트에 맞게 이미지를 준비하여 사용하면 된다.

2. 이벤트 수정 기능 구현하기

이제 이벤트 수정 버튼을 누를 때 발생하는 이벤트를 구현해야 한다. FSCalendarDelegate 프로토콜의 didSelect 메소드를 사용하여 구현할 수 있다. 다음은 이벤트 수정 기능을 구현하는 코드이다.

func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
    // 이벤트 수정 기능을 호출한다.
    editEvent(date: date)
}

// 이벤트 수정 기능
func editEvent(date: Date) {
    // 이벤트 수정 화면으로 이동한다.
}

위 코드에서는 editEvent(date:) 메소드를 호출하여 이벤트 수정 기능을 구현하도록 하였다. 해당 메소드에서는 이벤트를 수정하기 위한 화면으로 이동하는 로직을 작성하면 된다.

3. 이벤트 수정 화면 개발하기

마지막으로 이벤트 수정 화면을 개발해야 한다. 이 화면에서는 선택한 날짜의 이벤트를 표시하고, 수정할 수 있는 UI 요소를 제공해야 한다. 이 화면을 개발하는 방법은 프로젝트의 요구사항에 따라 다를 수 있다. 여기서는 간단한 예시로 UITextField를 사용하여 이벤트명을 수정하는 기능을 구현해보도록 하겠다.

// 이벤트 수정 화면의 viewDidLoad 메소드
override func viewDidLoad() {
    super.viewDidLoad()
    
    // 선택한 날짜의 이벤트를 가져온다.
    let event = getEvent(date: selectedDate)
    
    // 이벤트명을 표시하는 텍스트 필드를 생성한다.
    let textField = UITextField(frame: CGRect(x: 100, y: 100, width: 200, height: 40))
    textField.text = event.name
    view.addSubview(textField)
}

// 선택한 날짜의 이벤트를 가져오는 기능
func getEvent(date: Date) -> Event {
    // 선택한 날짜의 이벤트를 데이터베이스에서 가져오는 로직을 작성한다.
    // 해당 예시에서는 단순히 하드코딩으로 예시 이벤트를 반환한다.
    return Event(name: "예시 이벤트", date: date)
}

위 코드에서는 getEvent(date:) 메소드를 사용하여 선택한 날짜의 이벤트를 가져와서, 해당 이벤트의 이름을 표시하는 UITextField를 생성하고 초기값으로 설정하였다.

마무리

이렇게하면 FSCalendar에서 이벤트 수정 기능을 개발할 수 있다. 프로젝트의 요구사항에 따라 추가적인 기능을 구현하면 더욱 완성도 있는 앱을 만들 수 있다. FSCalendar 라이브러리의 문서 및 예제 코드를 참고하면 더 자세한 기능을 구현할 수 있으니 참고해보기 바란다. Happy coding!