5

我在我的应用程序中使用FSCalendar,我想在该日历中显示下一个上一个按钮,以便用户也可以点击它们。努力尝试,但没有得到任何想法。

4

3 回答 3

4

试试这个代码

@IBOutlet weak var calendar: FSCalendar!
....
@IBAction func nextTapped(_ sender:UIButton) {
    calendar.setCurrentPage(getNextMonth(date: calendar.currentPage), animated: true)
}

@IBAction  func previousTapped(_ sender:UIButton) {
    calendar.setCurrentPage(getPreviousMonth(date: calendar.currentPage), animated: true)
}

func getNextMonth(date:Date)->Date {
    return  Calendar.current.date(byAdding: .month, value: 1, to:date)!
}

func getPreviousMonth(date:Date)->Date {
    return  Calendar.current.date(byAdding: .month, value: -1, to:date)!
}

输出

在此处输入图像描述

于 2018-04-24T07:39:57.320 回答
2

你可以Button在类似的FSCalendar View东西上加 2。 在此处输入图像描述

这里黄色View是我FSCalendar的,上面有 2 个button。现在您需要对 2 采取行动button

对于上一个Button,您需要调用以下代码。

目标 C

- (IBAction)onPreviousMonthButtonClick:(UIButton *)sender {
    [self.calendarVW setCurrentPage:[self.gregorian dateByAddingUnit:NSCalendarUnitMonth value:-1 toDate:self.calendarVW.currentPage options:0] animated:YES];
}

对于 Next Button,您需要调用以下代码。

- (IBAction)onNextMonthButtonClick:(UIButton *)sender {
    [self.calendarVW setCurrentPage:[self.gregorian dateByAddingUnit:NSCalendarUnitMonth value:1 toDate:self.calendarVW.currentPage options:0] animated:YES];
}

迅速

对于上一个Button,您需要调用以下代码。

@IBAction func onPreviousMonthButtonClick(sender: UIButton) {
    self.calendarVW.setCurrentPage(self.gregorian.date(byAdding: .month, value: -1, to: self.calendarVW.currentPage), animated: true)
}

对于 Next Button,您需要调用以下代码。

@IBAction func onNextMonthButtonClick(sender: UIButton) {
    self.calendarVW.setCurrentPage(self.dateByAddingMonths(1, currentDate: self.calendarView.currentPage), animated: true)
}
于 2018-04-24T07:17:45.820 回答
1

您可以通过以下代码实现它,但您需要根据您的设计为 Next 和 Previous 创建自定义按钮。

//MARK: - Next Button Action -
@IBAction func btnNextMonthClicked(sender: UIButton) {

    let currentDate = self.calendarView.currentPage
    let date = self.dateByAddingMonths(1, currentDate: currentDate)
    self.calendarView.setCurrentPage(date, animated: true)
}

// For getting Next month 
func dateByAddingMonths(dMonths: Int, currentDate: NSDate) -> NSDate{

    let dateComponent = NSDateComponents()
    dateComponent.month = dMonths
    let newDate = NSCalendar.currentCalendar().dateByAddingComponents(dateComponent, toDate: currentDate, options: NSCalendarOptions.WrapComponents)
    return newDate!
}

//MARK: - Previous Button Action -
@IBAction func btnPreviousMonthClicked(sender: AnyObject) {

    let currentDate = self.calendarView.currentPage
    let date = self.dateBySubtractingMonths(1, currentDate: currentDate)
    self.calendarView.setCurrentPage(date, animated: true)
}

// For Previous Month
func dateBySubtractingMonths(dMonths: Int, currentDate: NSDate) -> NSDate{

    return self.dateByAddingMonths(-dMonths, currentDate: currentDate)
}
于 2018-04-24T07:29:09.753 回答