Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在不更改周的情况下更改不同月份的日历中的日期_Ios_Objective C_Jtcalendar - Fatal编程技术网

Ios 如何在不更改周的情况下更改不同月份的日历中的日期

Ios 如何在不更改周的情况下更改不同月份的日历中的日期,ios,objective-c,jtcalendar,Ios,Objective C,Jtcalendar,如果你首先看到图片,我的问题就会被清楚地理解: 在第一张图片中,选择的日期是3月2日 但当我尝试选择2月28日或29日,而不是停留在同一周,它会移到前一周。请看第二张图片 我怎样才能避免呢? 以下是框架模块本身的一些代码: - (void)viewDidScroll { if(self.contentSize.width <= 0){ return; } CGSize size = self.frame.size; switch (_pageMode) { case

如果你首先看到图片,我的问题就会被清楚地理解: 在第一张图片中,选择的日期是3月2日

但当我尝试选择2月28日或29日,而不是停留在同一周,它会移到前一周。请看第二张图片

我怎样才能避免呢? 以下是框架模块本身的一些代码:

- (void)viewDidScroll
{
if(self.contentSize.width <= 0){
    return;
}

CGSize size = self.frame.size;

switch (_pageMode) {
    case JTCalendarPageModeFull:

        if(self.contentOffset.x < size.width / 2.){
            [self loadPreviousPage];
        }
        else if(self.contentOffset.x > size.width * 1.5){
            [self loadNextPage];
        }

        break;
    case JTCalendarPageModeCenter:

        break;
    case JTCalendarPageModeCenterLeft:

        if(self.contentOffset.x < size.width / 2.){
            [self loadPreviousPage];
        }

        break;
    case JTCalendarPageModeCenterRight:

        if(self.contentOffset.x > size.width / 2.){
            [self loadNextPage];
        }

        break;
}

[_manager.scrollManager updateMenuContentOffset:(self.contentOffset.x / self.contentSize.width) pageMode:_pageMode];
}

- (void)loadPreviousPage
{
    NSDate *nextDate = [_manager.delegateManager dateForPreviousPageWithCurrentDate:_leftView.date];

// Must be set before chaging date for PageView for updating day views
self->_date = _leftView.date;

UIView<JTCalendarPage> *tmpView = _rightView;

_rightView = _centerView;
_centerView = _leftView;

_leftView = tmpView;
_leftView.date = nextDate;

[self updateMenuDates];

JTCalendarPageMode previousPageMode = _pageMode;

[self updatePageMode];

CGSize size = self.frame.size;

switch (_pageMode) {
    case JTCalendarPageModeFull:

        _leftView.frame = CGRectMake(0, 0, size.width, size.height);
        _centerView.frame = CGRectMake(size.width, 0, size.width, size.height);
        _rightView.frame = CGRectMake(size.width * 2, 0, size.width, size.height);

        if(previousPageMode == JTCalendarPageModeFull){
            self.contentOffset = CGPointMake(self.contentOffset.x + size.width, 0);
        }
        else if(previousPageMode ==  JTCalendarPageModeCenterLeft){
            self.contentOffset = CGPointMake(self.contentOffset.x + size.width, 0);
        }

        self.contentSize = CGSizeMake(size.width * 3, size.height);

        break;
    case JTCalendarPageModeCenter:
        // Not tested

        _leftView.frame = CGRectMake(- size.width, 0, size.width, size.height);
        _centerView.frame = CGRectMake(0, 0, size.width, size.height);
        _rightView.frame = CGRectMake(size.width, 0, size.width, size.height);

        self.contentSize = size;

        break;
    case JTCalendarPageModeCenterLeft:

        _leftView.frame = CGRectMake(0, 0, size.width, size.height);
        _centerView.frame = CGRectMake(size.width, 0, size.width, size.height);
        _rightView.frame = CGRectMake(size.width * 2, 0, size.width, size.height);

        self.contentOffset = CGPointMake(self.contentOffset.x + size.width, 0);
        self.contentSize = CGSizeMake(size.width * 2, size.height);

        break;
    case JTCalendarPageModeCenterRight:

        _leftView.frame = CGRectMake(- size.width, 0, size.width, size.height);
        _centerView.frame = CGRectMake(0, 0, size.width, size.height);
        _rightView.frame = CGRectMake(size.width, 0, size.width, size.height);

        self.contentSize = CGSizeMake(size.width * 2, size.height);

        break;
}

// Update dayViews becuase current month changed
[_rightView reload];
[_centerView reload];

if(_manager.delegate && [_manager.delegate respondsToSelector:@selector(calendarDidLoadPreviousPage:)]){
    [_manager.delegate calendarDidLoadPreviousPage:_manager];
}
}
-(无效)视图显示滚动
{
如果(self.contentSize.width size.width*1.5){
[自动加载下一页];
}
打破
案例jtpagemodecenter:
打破
案例JTCalendarPageModeCenterLeft:
if(self.contentOffset.xsize.width/2){
[自动加载下一页];
}
打破
}
[\u manager.scrollManager updatementucontentofset:(self.contentOffset.x/self.contentSize.width)页面模式:\u页面模式];
}
-(无效)加载上一页
{
NSDate*nextDate=[\u manager.delegateManager dateForPreviousPageWithCurrentDate:\u leftView.date];
//必须在更改页面视图的日期之前设置,以更新日视图
self->\u date=\u leftView.date;
UIView*tmpView=_rightView;
_右视图=_中心视图;
_中心视图=_leftView;
_leftView=tmpView;
_leftView.date=nextDate;
[自我更新编辑];
JTCalendarPageMode previousPageMode=\u pageMode;
[自我更新模式];
CGSize size=self.frame.size;
开关(页面模式){
案例JTCalendarPageModeFull:
_leftView.frame=CGRectMake(0,0,size.width,size.height);
_centerView.frame=CGRectMake(尺寸.width,0,尺寸.width,尺寸.height);
_rightView.frame=CGRectMake(size.width*2,0,size.width,size.height);
如果(previousPageMode==JTCalendarPageModeFull){
self.contentOffset=CGPointMake(self.contentOffset.x+size.width,0);
}
else if(previousPageMode==JTCalendarPageModeCenterLeft){
self.contentOffset=CGPointMake(self.contentOffset.x+size.width,0);
}
self.contentSize=CGSizeMake(size.width*3,size.height);
打破
案例jtpagemodecenter:
//未经测试
_leftView.frame=CGRectMake(-size.width,0,size.width,size.height);
_centerView.frame=CGRectMake(0,0,size.width,size.height);
_rightView.frame=CGRectMake(size.width,0,size.width,size.height);
self.contentSize=大小;
打破
案例JTCalendarPageModeCenterLeft:
_leftView.frame=CGRectMake(0,0,size.width,size.height);
_centerView.frame=CGRectMake(尺寸.width,0,尺寸.width,尺寸.height);
_rightView.frame=CGRectMake(size.width*2,0,size.width,size.height);
self.contentOffset=CGPointMake(self.contentOffset.x+size.width,0);
self.contentSize=CGSizeMake(size.width*2,size.height);
打破
案例JTCalendarPageModeCenterRight:
_leftView.frame=CGRectMake(-size.width,0,size.width,size.height);
_centerView.frame=CGRectMake(0,0,size.width,size.height);
_rightView.frame=CGRectMake(size.width,0,size.width,size.height);
self.contentSize=CGSizeMake(size.width*2,size.height);
打破
}
//更新日视图,因为当月已更改
[_rightView重新加载];
[_centerView重新加载];
if(_manager.delegate&&[_manager.delegate respondsToSelector:@selector(calendarDidLoadPreviousPage:)){
[\u manager.delegate calendar上一页:\u manager];
}
}

我也在使用JTCalendar,但我没有遇到您提到的任何问题。我发现一件事是,它正在移到上个月。它看起来是正确的。但是如果我想在上面的图片中看到日期28或29,我怎么能看到它呢?(我在第二幅图中选择了29个日期)它正确地将月份显示为二月。但是它显示的是二月的最后一周!!获取?您使用的是月视图还是周视图?我在6个月前使用过,我无法从您的代码中理解抱歉。我使用的是周视图。但在一周内,如果有两个月的日期,则在选择该月的任何一个日期时,都不能正确显示该周。相反,它会根据我们的选择向左或向右移动。