JTAppleCalendar icon indicating copy to clipboard operation
JTAppleCalendar copied to clipboard

how to select cells in JTACYearView

Open Stefanhym opened this issue 5 years ago • 1 comments

(Required) Version Number: iOS 13.3

Description

Is there a way to select cells in JTACYearView through delegate like JTACMonthView? I didn't find any available methods to do this.

Steps To Reproduce

Expected Behavior

Additional Context

Stefanhym avatar Mar 24 '20 05:03 Stefanhym

I created a hack to resolve this issue for now. No PR since there are a lot of edge cases that my hack would not solve so treat carefully:

In JTACYearViewDelegate.swift, under the JTACYearViewDelegate , add:

func didSelectIndexPath(indexPath: IndexPath)

In JTACCollectionYearViewDelegates.swift, add:

public func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        calendarDelegate?.didSelectIndexPath(indexPath: indexPath)
 } 

and lastly, in your JTACYearViewDelegate implementation:

    func didSelectIndexPath(indexPath: IndexPath) {
        
        var month: Int = 0
        if indexPath.item < 13 {
            month = indexPath.item
        } else {
            // because year cells are counted as items, we have to remove them from the month count
            // i.e. if indexPath.item = 14, we are tapping on january of the second year since Dec = 12, second_year = 13, january = 14
            month = (indexPath.item - (indexPath.item / 12)) % 12
        }
        
        var year: Int = 0
        if indexPath.item < 13 {
            year = sDate.year
        } else {
            let yearsToAdd = Float(indexPath.item / 12).rounded(.up)
            year  = sDate.year + Int(yearsToAdd)
        }
        
        print("selected month: \(month)")
        print("selected year: \(year)")
  }

Notes:

  • sDate is the startDate of your year calendar.
  • This works when the year start on January.

nilnilnull avatar Apr 14 '20 20:04 nilnilnull