Giter VIP home page Giter VIP logo

Comments (7)

 avatar commented on July 19, 2024

@stevewirig see the forks. I sow this feature in some one.

from mncalendarview.

johnrickman avatar johnrickman commented on July 19, 2024

This is what I added myself, where date is the beginning of the month that you want.

  • (void)scrollToDate:(NSDate *)date {
    [self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:[_monthDates indexOfObject:date]] atScrollPosition:UICollectionViewScrollPositionTop animated:NO];
    }

from mncalendarview.

nivaskarthik avatar nivaskarthik commented on July 19, 2024

Hi there,

I have added the mentioned method but am getting below crash.

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'attempt to scroll to invalid index path: <NSIndexPath: 0xb736db0> {length = 2, path = 2147483647 - 0}'

from mncalendarview.

mrbagels avatar mrbagels commented on July 19, 2024

I am having trouble with this as well, any updates?

from mncalendarview.

nivaskarthik avatar nivaskarthik commented on July 19, 2024

Corrected Answer:

[calendarView.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:1] atScrollPosition:UICollectionViewScrollPositionTop animated:YES];

Pass the selected date index path.

from mncalendarview.

dehli avatar dehli commented on July 19, 2024

I know this is kind of old, but I found that this method works better. If you have any improvements let me know!

-(void) scrollToDate:(NSDate*) date withAnimation: (BOOL) animate{
    NSDateComponents *dateComponents = [self.calendar components:(NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:[NSDate date]];
    dateComponents.day = 1;
    NSDate *beginningOfMonth = [self.calendar dateFromComponents:dateComponents];

    NSInteger month = [[self.calendar components:NSCalendarUnitMonth fromDate:beginningOfMonth toDate:date options: 0] month];
    NSIndexPath* index = [NSIndexPath indexPathForItem:0 inSection:month];

    UICollectionViewLayoutAttributes *attributes = [self.collectionView layoutAttributesForItemAtIndexPath:index];
    CGRect rect = attributes.frame;
    rect.origin.y += self.bounds.size.height - 30-44;

    [self.collectionView scrollRectToVisible:rect animated:animate];
}

from mncalendarview.

Mackarous avatar Mackarous commented on July 19, 2024

Hello Dehli,

I happened upon your code and there is an issue when scrolling to a date that is before the visible date on screen. I have made some changes, now it will work regardless of scroll direction.

-(void) scrollToDate:(NSDate*)date animated:(BOOL)animated
{
    NSDateComponents *dateComponents = [self.calendar components:(NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:self.fromDate];
    dateComponents.day = 1;
    NSDate *beginningOfMonth = [self.calendar dateFromComponents:dateComponents];

    NSInteger month = [[self.calendar components:NSCalendarUnitMonth fromDate:beginningOfMonth toDate:date options: 0] month];
    NSIndexPath* index = [NSIndexPath indexPathForItem:0 inSection:month];

    UICollectionViewLayoutAttributes *attributes = [self.collectionView layoutAttributesForItemAtIndexPath:index];
    CGRect rect = attributes.frame;

    int offset = 44;
    if ([self.collectionView contentOffset].y > rect.origin.y)
        offset -= 64;
    rect.origin.y += self.bounds.size.height - offset - 568;
    rect.size = CGSizeMake(320, 568);

    [self.collectionView scrollRectToVisible:rect animated:animated];
}

from mncalendarview.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.