Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.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_Nsdate - Fatal编程技术网

Ios 显示上一个月的名称和年份

Ios 显示上一个月的名称和年份,ios,objective-c,nsdate,Ios,Objective C,Nsdate,在这里,我使用了一个标签来显示当前月份和年份。它的侧面有一个按钮,可以移动到上个月。当用户按下侧面按钮时,应显示上一个月 我这样做只是为了展示本月的情况。但无法在同一标签中移动和显示上一个月 NSDate *date = [NSDate date]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateFormat=@"MMMM"; NSString * monthString =

在这里,我使用了一个标签来显示当前月份和年份。它的侧面有一个按钮,可以移动到上个月。当用户按下侧面按钮时,应显示上一个月

我这样做只是为了展示本月的情况。但无法在同一标签中移动和显示上一个月

NSDate *date = [NSDate date];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat=@"MMMM";
NSString * monthString = [[dateFormatter stringFromDate:date] capitalizedString];
dateFormatter.dateFormat=@"yyyy";
NSString * yearString = [[dateFormatter stringFromDate:date] capitalizedString];
datelabel.text = [NSString stringWithFormat:@"%@ %@",monthString,yearString];
这里是我的按键方法:

- (IBAction)leftBtn:(id)sender {
}

- (IBAction)rightBtn:(id)sender {
}
因此,在
normal
时,当
查看加载时
应显示
2015年12月
。当用户按下
leftbutton
时,
datelabel
应显示
2015年11月
。当用户从
11月
右键
时,也应显示
2015年12月


我很困惑。请帮我解决,这是我的第一个问题。帮帮我。谢谢

使用实例变量存储当前日期。加载视图时,将其设置为
[NSDate]
。更新当前代码,使其可以随时运行,并使用实例变量date更新标签

完成此操作后,请更改设置代码以获取当前日期,并使用
NSDateComponents
从日期中删除日期和时间,以便在实例变量中存储的日期为每月的第一天。进行测试,以确保其工作正常,并且对用户而言外观相同


现在,您的左右按钮可以使用日期组件从实例变量日期添加或删除一个月,然后更新标签。

使用实例变量存储当前日期。加载视图时,将其设置为
[NSDate]
。更新当前代码,使其可以随时运行,并使用实例变量date更新标签

完成此操作后,请更改设置代码以获取当前日期,并使用
NSDateComponents
从日期中删除日期和时间,以便在实例变量中存储的日期为每月的第一天。进行测试,以确保其工作正常,并且对用户而言外观相同


现在,您的左右按钮可以使用日期组件添加或删除实例变量日期的一个月,然后更新标签。

您需要使用
NSDateComponents

- (IBAction)rightBtn:(id)sender 
{

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"MMMM yyyy"];
    NSDate *tempDate = [dateFormat dateFromString:datelabel.text];

    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
    [dateComponents setMonth:1];
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDate *newDate = [calendar dateByAddingComponents:dateComponents toDate:tempDate options:0];

    datelabel.text = [dateFormat stringFromDate:newDate];

}
左键也是一样

- (IBAction)leftBtn:(id)sender 
{

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"MMMM yyyy"];
    NSDate *tempDate = [dateFormat dateFromString:datelabel.text];

    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
    [dateComponents setMonth:-1];
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDate *newDate = [calendar dateByAddingComponents:dateComponents toDate:tempDate options:0];

    datelabel.text = [dateFormat stringFromDate:newDate];
}

您需要使用
NSDateComponents

- (IBAction)rightBtn:(id)sender 
{

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"MMMM yyyy"];
    NSDate *tempDate = [dateFormat dateFromString:datelabel.text];

    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
    [dateComponents setMonth:1];
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDate *newDate = [calendar dateByAddingComponents:dateComponents toDate:tempDate options:0];

    datelabel.text = [dateFormat stringFromDate:newDate];

}
左键也是一样

- (IBAction)leftBtn:(id)sender 
{

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"MMMM yyyy"];
    NSDate *tempDate = [dateFormat dateFromString:datelabel.text];

    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
    [dateComponents setMonth:-1];
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDate *newDate = [calendar dateByAddingComponents:dateComponents toDate:tempDate options:0];

    datelabel.text = [dateFormat stringFromDate:newDate];
}

我建议使用
NSDateComponents
(从当前日期开始,然后是-1个月)来获取上一个月的
NSDate
。我建议使用
NSDateComponents
(从当前日期开始,然后是-1个月)来获取上一个月的
NSDate
。哦,真是太棒了。谢谢你的帮助,当然它会帮助我学习。不要从视图文本来回转换,这是一个糟糕的设计和架构。在我上面的帖子中,还有一个问题。我在视图中输入了一些代码。工作正常。我的viewdidload代码还可以,或者我需要更改。@Wain我不知道如何以其他方式完成此操作,也许您可以帮助我经常使用此方法。@joseph我需要查看更多您的代码,也许还有一个问题?哦,伙计,真是太棒了。谢谢你的帮助,当然它会帮助我学习。不要从视图文本来回转换,这是一个糟糕的设计和架构。在我上面的帖子中,还有一个问题。我在视图中输入了一些代码。工作正常。我的viewdidload代码还可以,或者我需要更改。@Wain我不知道如何以其他方式完成此操作,也许您可以帮助我经常使用此方法。@joseph我需要查看更多您的代码,也许还有一个问题?哦,我知道这更好,@joseph您需要在您的实现中创建一个实例变量,例如
@implementation yourViewController{NSDate*myDate
;}或在.m或.h文件中,然后只需按照@Wain的答案,在
rightBtn
leftBtn
方法中使用该变量,而不是datelabel.txt。哦,我看这样更好,@joseph您需要在您的实现中创建一个实例变量,例如
@implementation yourViewController{NSDate*myDate
;}或在.m或.h文件中,然后只需按照@Wain的答案,在
rightBtn
leftBtn
方法中使用该变量,而不是在datelabel.txt中使用。