在 FSCalendar 中设置下一个上一个按钮

Posted

技术标签:

【中文标题】在 FSCalendar 中设置下一个上一个按钮【英文标题】:Set Next Previous button in FSCalendar 【发布时间】:2018-04-24 06:32:44 【问题描述】:

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

【问题讨论】:

做 1 件事加 2 button 超过 FSCalendar View。并对buttons采取行动。 【参考方案1】:

试试这个代码

@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)!

输出

【讨论】:

它适用于月视图...对于周视图我需要做哪些更改?【参考方案2】:

您可以在 FSCalendar View 上添加 2 个 Button 类似的东西。

这里黄色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];

SWIFT

对于以前的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)

【讨论】:

非常感谢您的宝贵帮助,我已经按照您所说的方式实现了,但是有没有办法从 FSCalendar 本身获取按钮? @priyanshu button from FSCalendar 表示哪个按钮? FSCalendar 中的下一个和上一个按钮 @priyanshu,你想要获取按钮的目的是什么?【参考方案3】:

您可以通过以下代码实现它,但您需要根据您的设计为 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)

【讨论】:

以上是关于在 FSCalendar 中设置下一个上一个按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java 循环链表中设置下一个值?

在位掩码中设置下一个工作日的算法

在 FSCalendar UIView 上放置按钮

如何以编程方式选择日期并在 FSCalendar 上显示

在 iOS Xamarin Native 中设置 FSCalendarAppearance 委托

FSCalendar - 从选定的日期创建 segue 到另一个视图控制器