我使用情节提要板的视图上有一个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/