通过选择collectionView单元来动画化tableView行

时间:2018-11-27 22:19:53

标签: ios swift uitableview uicollectionview nsdate

我在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)
        }
    }

0 个答案:

没有答案