首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新加载FSCalendar视图

重新加载FSCalendar视图
EN

Stack Overflow用户
提问于 2020-01-18 21:49:36
回答 1查看 1.2K关注 0票数 1

目前,我有一个使用FSCalendar的简单日历应用程序,我希望显示与日期数组匹配的每一天的事件。当视图被加载时,它根据数组中的内容正确地显示事件。添加新日期后,通过设置断点验证数组是否添加了新日期,最后调用calendar.reloadData()函数。

ViewController.swift

代码语言:javascript
复制
class ViewController: UIViewController {

    let calendarA = FSCalendar()
    var calendarDaysEvent: [String] = []



    // Result with the events of the selected day
    var dayEvents: Results<EventsCompleted>?

    override func viewDidLoad() {
        super.viewDidLoad()


        //.../

        calendarA.dataSource = self
        calendarA.delegate = self


        self.calendarA.reloadData()
        loadEventsCompleted()
        loadEventsPerDay()

    }


    @IBAction func addItem(_ sender: UIButton) {
       // Adds new item to the database
    }


    func randomHexColor() -> String {
        // get the hex color
    }

    func hexStringToUIColor (hex:String) -> UIColor {
        // hexColor to UI
    }

    func loadEventsCompleted() {
        dayEvents = realm.objects(EventsCompleted.self)
        eventsTableView.reloadData()
    }

    func loadEventsPerDay(){
        // calendarDays
        let id = dayEvents?.count ?? 0
        if id != 0 {
            print("ID: \(id)")
            for x in 1...id {
                calendarDaysEvent.append(dayEvents![x-1].date)
            }

            calendarA.reloadData() // Although I call it here, it is not called
            // All the database functions for those things work normally
        } else {
            print("No events on the calendar")
        }

    }
}

FSCalendar的扩展

只有在调用onViewDidLoad函数时,才会调用numberOfEventsFor函数。

代码语言:javascript
复制
extension ViewController: FSCalendarDelegate, FSCalendarDataSource {
    func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
        print("Selected \(date)") //2020-01-15 23:00:00 +0000
        print("Formatted date: \(date.toDateString(dateFormat: "yyyy-MM-dd"))")
    }

    func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int {
        if calendarDaysEvent.count != 0 {
            if calendarDaysEvent.contains(date.toDateString(dateFormat: "yyyy-MM-dd")) {
                return 1
            } else {
                return 0
            }
        } else {
            return 0
        }

    }
}

当我在numberOfEventsFor函数的唯一return 1情况下设置断点时,它永远不会触发。我试图找出reloadData是如何工作的,它看起来像是重新创建了视图,这意味着它也应该重新加载事件。我不确定在调用来自扩展的reloadData函数时是否做错了什么。

我删除了一些我认为不相关的代码,但如果你认为它可以帮助提供更多的上下文,我可以在这里添加它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-19 01:51:59

所以这是一个愚蠢的问题。日历状态更新不起作用的原因是我没有创建日历的出口。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59801237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档