首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JTAppleCalendar中将月视图更改为周视图,反之亦然

如何在JTAppleCalendar中将月视图更改为周视图,反之亦然
EN

Stack Overflow用户
提问于 2017-11-12 21:44:25
回答 2查看 1.4K关注 0票数 2

嗨,JTAppleCalendar里的newBiew。我在JTAppleCalendar上点击了这个链接。

https://www.youtube.com/watch?v=CQNotydm58s&index=6&list=PLpqJf39XekqyUG7dxcqGO0JNprryysv9Q

我有这个问题:

如何在用户单击按钮将monthView更改为WeekView或从周视图更改为月视图时显示日历

如何以编程方式更改CalendarView和mainStack的日历大小,因为它们有约束?

我认为我需要像下面这样处理configureCalendar,但是如何以编程方式将月视图更改为周视图,反之亦然。

我有一个用来包含CalendarView的堆栈(称为mainStack)

日历视图的布局:

代码语言:javascript
复制
@IBOutlet weak var CalendarView : JTAppleCalendarView!<br/>
@IBOutlet weak var mainStack: UIStackView!<br/>


extension MyCalendar: JTAppleCalendarViewDataSource, JTAppleCalendarViewDelegate {

    func configureCalendar( _ calendar:JTAppleCalendarView) -> ConfigurationParameters {

        formatter.dateFormat = "yyyy MM dd"
        formatter.timeZone = Calendar.current.timeZone
        formatter.locale = Calendar.current.locale

        let startDate = formatter.date(from: "2017 01 01")!
        let endDate = formatter.date(from: "2027 12 31")!        

        //-- how to set these "

       1) Full calendar view

        let parameters = ConfigurationParameters(startDate : startDate, endDate: endDate)          
        return parameters


       2) for week view
        let parameters = ConfigurationParameters(startDate : startDate, endDate: endDate, numberOfRows:1)      

        return parameters

    }


  func calendar( _ calendar: JTAppleCalendarView, cellForItemAt date: Date, cellState: CellState, indexPath: IndexPath) -> JTAppleCell{


        let cell = calendar.dequeueReusableJTAppleCell(withReuseIdentifier: "CustomCell", for: indexPath) as! CustomCell

        cell.dateLabel.text = cellState.text

        configureCell(cell:cell, cellState: cellState)

        return cell

    }


    //------------ selected item

    func calendar( _ calendar: JTAppleCalendarView, didSelectDate date: Date, cell:JTAppleCell?, cellState:CellState){

        configureCell(cell: cell, cellState: cellState)     

    }


    func calendar( _ calendar: JTAppleCalendarView, didDeselectDate date: Date, cell:JTAppleCell?, cellState:CellState){

              configureCell(cell: cell, cellState: cellState)

    }

   func calendar(_ calendar: JTAppleCalendarView, didScrollToDateSegmentWith visibleDates: DateSegmentInfo) {

       setupCalendarView(dateSegment: visibleDates)

    }

}

请帮帮忙。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2019-06-20 20:15:35

所以我们的计划是:

您有一个用于行数的变量。

在monthView模式下,它有6行。

在weekView模式下,它有1行。

因此,当您想要更改模式时,您可以更改numberOfRows并重新加载calendarView,然后滚动到当前日期。

另外,当你有weekView的时候,你应该使用一点不同的ConfigurationParameters。

我就是这么做的:

代码语言:javascript
复制
@IBAction func monthWeekModeChanged(_ sender: UISegmentedControl) {
    if sender.selectedSegmentIndex == 0 {
        numberOfRows = 6
    } else {
        numberOfRows = 1
    }
    calendarView.reloadData()
    calendarView.scrollToDate(Date(), animateScroll: false)
}

    var numberOfRows = 6


extension CalendarViewController: JTAppleCalendarViewDataSource {

func configureCalendar(_ calendar: JTAppleCalendarView) -> ConfigurationParameters {

    let startDate = viewModel.formatter.date(from: "01-Jan-2019")
    let endDate = viewModel.formatter.date(from: "31-Dec-2020")

    if numberOfRows == 6 {
                return ConfigurationParameters(startDate: startDate!, endDate: endDate!, numberOfRows: numberOfRows, firstDayOfWeek: .monday)
    } else {
        return ConfigurationParameters(startDate: startDate!,
                                                 endDate: endDate!,
                                                 numberOfRows: 1,
                                                 generateInDates: .forFirstMonthOnly,
                                                 generateOutDates: .off, firstDayOfWeek: .monday,
                                                 hasStrictBoundaries: false)
    }
}

}

票数 0
EN

Stack Overflow用户

发布于 2019-09-17 04:03:11

教程here说明了如何做到这一点。

我不能在这里粘贴整个东西,因为说明很长。此外,在页面的底部是一个zip文件中的完整代码,您可以随意使用。

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

https://stackoverflow.com/questions/47249522

复制
相关文章

相似问题

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