Swift 如何使用FSCalendar显示日期的2个不同颜色点?

Swift 如何使用FSCalendar显示日期的2个不同颜色点?,swift,realm,nspredicate,fscalendar,Swift,Realm,Nspredicate,Fscalendar,初学者程序员在这里 我试图显示两个不同的颜色点,如果有一个消极的和积极的交易日期 这是我的密码。它只显示一个点 func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int { let incomeTransaction = realm.objects(Transaction.self).filter(positiveTransactionPredicate(date:

初学者程序员在这里

我试图显示两个不同的颜色点,如果有一个消极的和积极的交易日期

这是我的密码。它只显示一个点

func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int {
        
        let incomeTransaction = realm.objects(Transaction.self).filter(positiveTransactionPredicate(date: date))
        
        let expenseTransaction = realm.objects(Transaction.self).filter(negativeTransactionPredicate(date: date))
        
        for _ in incomeTransaction {
            return 1
        }
        for _ in expenseTransaction {
            return 1
        }
        return 0
    }

func calendar(_ calendar: FSCalendar, appearance: FSCalendarAppearance, eventDefaultColorsFor date: Date) -> [UIColor]? {
        
        let incomeTransaction = realm.objects(Transaction.self).filter(positiveTransactionPredicate(date: date))
        
        let expenseTransaction = realm.objects(Transaction.self).filter(negativeTransactionPredicate(date: date))
        
        for _ in incomeTransaction {
            return [UIColor(rgb: Constants.green)]
        }
        for _ in expenseTransaction {
            return [UIColor(rgb: Constants.red)]
        }
        return nil
    }

此代码显示两个点,但颜色相同:

    func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int {
        
        let incomeTransaction = realm.objects(Transaction.self).filter(positiveTransactionPredicate(date: date))
        
        let expenseTransaction = realm.objects(Transaction.self).filter(negativeTransactionPredicate(date: date))
            
        for _ in incomeTransaction {
            return 2
        }
        for _ in expenseTransaction {
            return 2
        }
        
        return 0
    }

如何告诉FSCalendar委托方法在日期上显示两个不同的颜色点

像这样:


谢谢。

似乎
numberOfEventsForDate:(NSDate*)日期已正确实现。返回1,结果是1点

返回1将显示1个点,0将显示0个点,2将显示两个点。来自示例项目

/**
 * Asks the dataSource the number of event dots for a specific date.
 *
 * @see
 *   - (UIColor *)calendar:(FSCalendar *)calendar appearance:(FSCalendarAppearance *)appearance eventColorForDate:(NSDate *)date;
 *   - (NSArray *)calendar:(FSCalendar *)calendar appearance:(FSCalendarAppearance *)appearance eventColorsForDate:(NSDate *)date;
 */
- (NSInteger)calendar:(FSCalendar *)calendar numberOfEventsForDate:(NSDate *)date;
我建议看一下github回购协议的例子

objc实现如下所示

//return 2 for 2 events
cell.numberOfEvents = [self.dataSourceProxy calendar:self numberOfEventsForDate:date]; 
如果您总是想要两个点,而不管实际事件数是多少,只需返回2即可

func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int {
   return 2
}

下载Example.swift项目并查看FSCalendarSwiftExample.xcodeproj

似乎没有
numberOfEventsForDate:(NSDate*)日期已正确实现。返回1,结果是1点

返回1将显示1个点,0将显示0个点,2将显示两个点。来自示例项目

/**
 * Asks the dataSource the number of event dots for a specific date.
 *
 * @see
 *   - (UIColor *)calendar:(FSCalendar *)calendar appearance:(FSCalendarAppearance *)appearance eventColorForDate:(NSDate *)date;
 *   - (NSArray *)calendar:(FSCalendar *)calendar appearance:(FSCalendarAppearance *)appearance eventColorsForDate:(NSDate *)date;
 */
- (NSInteger)calendar:(FSCalendar *)calendar numberOfEventsForDate:(NSDate *)date;
我建议看一下github回购协议的例子

objc实现如下所示

//return 2 for 2 events
cell.numberOfEvents = [self.dataSourceProxy calendar:self numberOfEventsForDate:date]; 
如果您总是想要两个点,而不管实际事件数是多少,只需返回2即可

func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int {
   return 2
}

下载Example.swift项目并查看FSCalendarSwiftExample.xcodeproj

不清楚您在问什么或实际问题是什么。你是在问一般情况下如何显示两点,或者如何从领域或计算中读取数据,或者确切地说是什么?你能更新和澄清这个问题,并具体告诉我们问题是什么吗?@jay我已经更新了这个问题。我只想要一些示例代码,显示日期的两个不同颜色点。如果我能知道怎么做的话,我应该能弄清楚一切。谢谢。我不清楚你在问什么或者实际问题是什么。你是在问一般情况下如何显示两点,或者如何从领域或计算中读取数据,或者确切地说是什么?你能更新和澄清这个问题,并具体告诉我们问题是什么吗?@jay我已经更新了这个问题。我只想要一些示例代码,显示日期的两个不同颜色点。如果我能知道怎么做的话,我应该能弄清楚一切。谢谢。谢谢你的合作。我知道如何创建两个点。我甚至在最初的问题中提供了一个示例代码来说明如何做到这一点。我的问题不是如何创建两个点,而是如何创建两个不同颜色的点。我想你误解了-可能是因为我说的不清楚。为每个日期调用委托方法
calendar(calendar:appearance:FSCalendarAppearance:EventDefaultColors for
)。如果传入的日期是日期,则返回您想要的颜色。例如,如果在1号和2号有事件,请检查传入的日期是否在dateArray1中,然后返回
return[UIColor.blue]
。如果日期在dateArray2中,
返回[UIColor.green]
以及数据源方法
alendar(uuCalendar:NumberOfEvents for
表示圆点数感谢您的合作。我了解如何创建两个圆点。我甚至在原始问题中提供了一个示例代码。我的问题不是如何创建两个圆点,而是如何创建两个不同颜色的圆点。我想您误解了-可能是因为我所说的不清楚。委托方法
日历(uCalendar:appearance:FSCalendarAppearance:EventDefaultColors为每个日期调用。如果传入的日期是一个日期,则有一个事件返回您想要的颜色。例如,如果在1号和2号有一个事件,请检查传入的日期是否在dateArray1中,并返回
return[UIColor.blue]
。如果日期在dateArray2中,
返回[UIColor.green]
以及数据源方法
alendar(\uCalendar:NumberOfEvents for
指示点计数