嗨,JTAppleCalendar里的newBiew。我在JTAppleCalendar上点击了这个链接。
https://www.youtube.com/watch?v=CQNotydm58s&index=6&list=PLpqJf39XekqyUG7dxcqGO0JNprryysv9Q
我有这个问题:
如何在用户单击按钮将monthView更改为WeekView或从周视图更改为月视图时显示日历
如何以编程方式更改CalendarView和mainStack的日历大小,因为它们有约束?
我认为我需要像下面这样处理configureCalendar,但是如何以编程方式将月视图更改为周视图,反之亦然。
我有一个用来包含CalendarView的堆栈(称为mainStack)
日历视图的布局:
@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)
}
}请帮帮忙。
谢谢
发布于 2019-06-20 20:15:35
所以我们的计划是:
您有一个用于行数的变量。
在monthView模式下,它有6行。
在weekView模式下,它有1行。
因此,当您想要更改模式时,您可以更改numberOfRows并重新加载calendarView,然后滚动到当前日期。
另外,当你有weekView的时候,你应该使用一点不同的ConfigurationParameters。
我就是这么做的:
@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)
}
}}
发布于 2019-09-17 04:03:11
教程here说明了如何做到这一点。
我不能在这里粘贴整个东西,因为说明很长。此外,在页面的底部是一个zip文件中的完整代码,您可以随意使用。
https://stackoverflow.com/questions/47249522
复制相似问题