iosswiftuikitcalendarkit

Create new event in CalendarKit


In my app, I'm trying to add ability to create a new event with CalendarKit when I press an empty space, but I can't find how to do that.

I know it's possible because you can do it in the demo app:

I've tried adding this to my app's code:

override func create(event: EventDescriptor, animated: Bool = false) {
    self.events.append(event) // self.events is my events data source
}

But it didn't worked, in fact, it doesn't even get called when I long press an empty space.

I also tried to look in the source code, but I found nothing. How can I do that? thanks in advance


Solution

  • override func dayView(dayView: DayView, didLongPressTimelineAt date: Date) {
        let newEvent = Event()
        
        newEvent.startDate = date
        newEvent.endDate = date.addingTimeInterval(3600)
        
        // Customize your event...
        newEvent.text = randomName() // A function that generates a new random name that haven't been used before.
        
        self.create(event: newEvent)
    }
    
    override func create(event: EventDescriptor, animated: Bool = false) {
        super.create(event: event, animated: animated)
        self.events.append(event)
    }
    
    override func dayView(dayView: DayView, didUpdate event: EventDescriptor) {
        for (index, eventFromList) in events.enumerated() {
            if eventFromList.text == event.text {
                events[index] = event
            }
        }
        self.endEventEditing()
        self.reloadData()
    }
    

    Please make sure that every Event have it's own unique name, otherwise it won't work