I am at the moment attempting to create an app that makes use of the TimelinePagerView
from the CalendarKit library, however I can not add the EventView
to the TimelinePagerView
.
How can I add an EventView
to the TimelinePagerView
?
I’ll present any data you want.
That is code that I created.
import UIKit
import CalendarKit
class ViewController: UIViewController, EventDataSource {
@IBOutlet weak var timelinePagerView: TimelinePagerView!
let date = Date()
let eventData = ["event1", "event2", "event3", "event4"]
var timelineStyle = TimelineStyle()
var generatedEvents = [EventDescriptor]()
var alreadyGeneratedSet = Set<Date>()
override func viewDidLoad() {
tremendous.viewDidLoad()
timelineStyle.eventGap = 1
timelinePagerView.updateStyle(timelineStyle)
timelinePagerView.autoScrollToFirstEvent = true
timelinePagerView.reloadData()
}
func eventsForDate(_ date: Date) -> [CalendarKit.EventDescriptor] {
if !alreadyGeneratedSet.accommodates(date) {
alreadyGeneratedSet.insert(date)
generatedEvents.append(contentsOf: generateEventsForDate(date))
}
return generatedEvents
}
personal func generateEventsForDate(_ date: Date) -> [EventDescriptor] {
let workingDate1 = Calendar.present.date(byAdding: .hour, worth: 9, to: date)!
let workingDate2 = Calendar.present.date(byAdding: .hour, worth: 11, to: date)!
let workingDate3 = Calendar.present.date(byAdding: .hour, worth: 13, to: date)!
let workingDate4 = Calendar.present.date(byAdding: .hour, worth: 17, to: date)!
var occasions = [Event]()
for i in 0...3 {
let occasion = Occasion()
if i == 0 {
occasion.dateInterval = DateInterval(begin: workingDate1, period: 120 * 60)
} else if i == 1 {
occasion.dateInterval = DateInterval(begin: workingDate2, period: 60 * 60)
} else if i == 2 {
occasion.dateInterval = DateInterval(begin: workingDate3, period: 240 * 60)
} else if i == 3 {
occasion.dateInterval = DateInterval(begin: workingDate4, period: 60 * 60)
}
occasion.textual content = eventData[i]
swap (i) {
case 0,1,3:
occasion.colour = .crimson
default:
occasion.colour = .blue
}
occasion.isAllDay = false
occasion.lineBreakMode = .byTruncatingTail
occasions.append(occasion)
occasion.userInfo = String(i)
}
return occasions
}
}