我使用情节提要板的视图上有一个UISegmentedControl,当前正在使用以下代码行以编程方式设置文本:

[segMonth setTitle:@"Month 1" forSegmentAtIndex:0];
[segMonth setTitle:@"Month 2" forSegmentAtIndex:1];

我还有一个使用此代码的日期函数,该函数获取当前月份的数字(1-12):
// Date
    NSDate *now = [NSDate date];
    NSString *strDate = [[NSString alloc] initWithFormat:@"%@",now];
    NSArray *arr = [strDate componentsSeparatedByString:@" "];
    NSString *str;
    str = [arr objectAtIndex:0];

    NSArray *arr_my = [str componentsSeparatedByString:@"-"];

    NSInteger month = [[arr_my objectAtIndex:1] intValue];
//End Date

我试图将本月的第一段命名为“十二月”,第二段的第二个月命名为“一月”。

我尝试使用以下代码,但似乎无法正常工作:
[segMonth setTitle:@"%d" forSegmentAtIndex:0];
[segMonth setTitle:@"%d" forSegmentAtIndex:1];

显然,这也只会给出月份的编号,而不是名称。

最佳答案

我已经看过您的代码,其中包含一种非常困难的方法来从我知道的NSDate中获取一个月,这可能不是答案。但是,我只是请您检查此代码,以了解获取月份,日期或时间或与NSDate分开的任何内容的正确方法。

NSDate *today = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc]
                         initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorian components:NSMonthCalendarUnit fromDate:today];
NSInteger currentMonth = [components month]; // this will give you the integer for the month number

[components setMonth:1];
NSDate *newDate = [gregorian dateByAddingComponents:components toDate:today options:0];
NSDateComponents *nextComponents = [gregorian components:NSMonthCalendarUnit fromDate:newDate];

更新:
NSInteger nextMonth = [nextComponents month]; // this will give you the integer for the month number

正如@Prince所说,您可以从NSDateFormatter获得月份的名称。无论如何,我重复一遍以使您理解。
NSDateFormatter *df = [[NSDateFormatter alloc] init];
NSString *currentMonthName = [[df monthSymbols] objectAtIndex:(currentMonth-1)];
NSString *nextMonthName = [[df monthSymbols] objectAtIndex:(nextMonth-1)];

[segMonth setTitle:currentMonthName forSegmentAtIndex:0];
[segMonth setTitle:nextMonthName forSegmentAtIndex:1];

关于ios - 通过变量以编程方式设置UISegmentedControl文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14081973/

10-09 07:02