我在collectionView中设置了带有日期的每周日历。该集合视图下面是一个表格视图。在collectionView中选择任何日期时,tableView会过滤工作正常的数据。
我的问题是我正在尝试根据单元格选择为tableView行设置动画,即,如果我选择下一个日期(或单元格),我想执行以下操作:
tableView.reloadRows(at: visibleRows, with: .left)
如果我选择上一个日期(或单元格),我想要:
tableView.reloadRows(at: visibleRows, with: .right)
下面是代码。任何帮助表示赞赏。
click here to see app screen gif
在collectionView中:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! WeekHeaderViewCell
cell.labelDate.text = calendarDateArray?[indexPath.row] as? String
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let selectedRow = getCalendar().setArray("dd MMMM yyyy")[indexPath.row] as? String
let dateFromString = getCalendar().df.date(from: selectedRow!)
mainCell?.fetchFilteredData(dateFromString!)
mainCell?.animateRows(animation: .left) // **help needed here**
}
在tableView中:
func fetchFilteredData(_ date: Date) {
resultsController.fetchRequest.predicate = NSPredicate(format: "(taskTime => %@) AND (taskTime <= %@)", DateHelper.startOfDay(day: date as NSDate), DateHelper.endOfDay(day: date as NSDate))
fetchData()
}
func animateRows(animation: UITableView.RowAnimation) {
tableView.reloadData()
if let visibleRows = tableView.indexPathsForVisibleRows {
tableView.reloadRows(at: visibleRows, with: animation)
}
}