3

ストーリーボードを使用して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

最初のセグメントに今月の「12月」、2番目のセグメントに翌月の「1月」という名前を付けようとしています。

次のコードを使用してみましたが、機能しないようです。

[segMonth setTitle:@"%d" forSegmentAtIndex:0];
[segMonth setTitle:@"%d" forSegmentAtIndex:1];

明らかに、それは名前ではなく、月の番号だけを与えるでしょう。

4

4 に答える 4

1

文字列フォーマッタを渡しており、月の名前が含まれていることを期待しています。試す

[segMonth setTitle:[NSString stringWithFormat:@"%@",str1] forSegmentAtIndex:0];
[segMonth setTitle:[NSString stringWithFormat:@"%@",str2] forSegmentAtIndex:1];

str1とstr2は、月の名前を含む文字列である必要があります(NSDateFormatterから取得可能)。

于 2012-12-29T13:11:15.173 に答える
1

次のように数値から月名を取得します。

 NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
 NSString *monthName = [[df monthSymbols] objectAtIndex:(yourMonthNumberHere-1)];

今それを使用します:

 [segMonth setTitle:monthName forSegmentAtIndex:0];
于 2012-12-29T13:17:28.357 に答える
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];
于 2012-12-29T13:55:58.623 に答える
0
int currentMonth = 12;   //December
int nextMonth = 1;   //January
NSDateFormatter *df1 = [[[NSDateFormatter alloc] init] autorelease];
NSString *currentMonthName = [[df1 monthSymbols] objectAtIndex:(currentMonth-1)];

NSDateFormatter *df2 = [[[NSDateFormatter alloc] init] autorelease];
NSString *nextMonthName = [[df2 monthSymbols] objectAtIndex:(nextMonth-1)];

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

monthSymbolsはゼロベースであるため、currentMonthとnextMonth(1〜12)から1を引く必要があることに注意してください。

于 2012-12-29T13:52:07.363 に答える