我有一个带有DidSelectMethod的collectionview日历,在这种方法中,我想检查所选日期是否等于==到同一视图中某个表视图中的任何日期(日期是该表视图的Header)控制器,然后在tableview中滚动到该日期。
我需要一些帮助,从逻辑上进行思考。现在,我认为我需要以某种方式使tableview的[section]脱离tableview方法,但我认为这不是正确的方法。
这是我到目前为止正在尝试的事情:
收藏夹查看日历的DidSelect方法:
func calendar(_ calendar: JTAppleCalendarView, didSelectDate date: Date, cell: JTAppleCell?, cellState: CellState) {
configureCalendarCell(cell: cell, cellState: cellState)
cell?.bounce()
selectedDate = date
// Check if selectedDate is == to any dates in the tableview
// First, get the dates from TableView's Data Source.
// The [datesFromCalendarXML] also make up the Headers of each section in TableView
let datesFromCalendarXML = allEventsInVisibleMonth.map {$0.eventdate}
// Reformat selectedDate from collectionView Calendar to String
let selectedDateToString = formatter.string(from: selectedDate!)
// See if the selected date matches any of the tableview dates
if datesFromCalendarXML.contains(selectedDateToString) {
// set up tableView's scrollToRow
// get [section] Int of the datesFromCalendarXML that matches
// Can I get [section] outside of of tableview?
let sectionOfDate =
let indexPath = IndexPath(row: 0 , section: sectionOfDate)
self.tableView.scrollToRow(at: indexPath, at: UITableView.ScrollPosition.top, animated: true)
} else {}
正在寻找有关此操作的提示。
答案 0 :(得分:1)
如果有人在找,这就是我的工作了。
我使用.index(of:_)在我的allEventsInVisibleMonth数组中获取selectedDate的索引,然后将该索引用于scrollToRow的indexPath:IndexPath。
let datesFromCalendarXML = allEventsInVisibleMonth.map {$0.eventdate}
let selectedDateToString = formatter.string(from: selectedDate!)
if let index = datesFromCalendarXML.index(of: selectedDateToString) {
let indexPath = IndexPath(row: 0 , section: index)
self.tableView.scrollToRow(at: indexPath, at:
UITableView.ScrollPosition.top, animated: true)
}