Я пытаюсь сделать простой календарь событий, я неделями искал подходящее решение. Я узнал MBCalendar, как бы то ни было, события в демоверсии не отображаются должным образом.
Это код:
import UIKit
import MBCalendarKit
class SwiftDemoViewController: CalendarViewController
{
var data : [Date:[CalendarEvent]] = [:]
required init?(coder aDecoder: NSCoder) {
self.data = [:]
super.init(coder: aDecoder)
}
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
self.data = [:]
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
//
// Step 0 : Wire up the data source and delegate
//
self.delegate = self
self.dataSource = self
// Define some events
let title : NSString = NSLocalizedString("Add Swift Demo", comment: "") as NSString
if let date : Date = NSDate(day: 9, month: 1, year: 2015) as Date?
{
let event : CalendarEvent = CalendarEvent(title: title as String, andDate: date, andInfo: nil)
self.data[date] = [event]
}
let title2 : NSString = NSLocalizedString("Release MBCalendarKit 5.0.0", comment: "") as NSString
if let date2 : Date = NSDate(day: 15, month: 8, year: 2017) as Date?
{
let event2 : CalendarEvent = CalendarEvent(title: title2 as String, andDate: date2, andInfo: nil)
self.data[date2] = [event2]
}
let title3 : NSString = NSLocalizedString("skuska eventu", comment: "evnt comment") as NSString
if let date3 : Date = NSDate(day: 3, month: 9, year: 2018) as Date?
{
let event3 : CalendarEvent = CalendarEvent(title: title3 as String, andDate: date3, andInfo: nil)
self.data[date3] = [event3]
}
}
// MARK: - CalendarDataSource
/**
Allows the data source to supply events to display on the calendar.
@param calendarView The calendar view instance that will display the data.
@param date The date for which the calendar view wants events.
@return An array of events objects.
*/
override func calendarView(_ calendarView: CalendarView, eventsFor date: Date) -> [CalendarEvent] {
let eventsForDate = self.data[date] ?? []
return eventsForDate
}
// MARK: - CKCalendarDelegate
// Called before the selected date changes.
override func calendarView(_ calendarView: CalendarView, didSelect date: Date) {
super.calendarView(calendarView, didSelect: date) // Call super to ensure it
}
// Called after the selected date changes.
override func calendarView(_ calendarView: CalendarView, willSelect date: Date) {
}
// A row was selected in the events table. (Use this to push a details view or whatever.)
override func calendarView(_ calendarView: CalendarView, didSelect event: CalendarEvent) {
}
}
Но что мне нужно сделать, так это на другом viewController иметь textView и pickerView. Вставьте некоторое значение (число) в этот текстовый вид, выберите дату в окне выбора и вставьте это значение в табличное представление под календарем, чтобы при выборе даты в этом календаре я видел значение этой даты в табличном представлении.
Я знаю, как передать данные, но не могу понять, как вставить их в правильную дату по значению, которое я выбрал в pickerView.
Буду признателен за любую помощь, или, если у вас есть другое решение, другое расширение календаря с рабочим tableView.
Спасибо