0

タイムマシンのように、「n」秒ごとに1日ずつ日付を変更したい。私はこのコードを持っていますが、何も起こりません。どんな助けでもありがたいです。これはコードです:問題もエラーもありません...明日の日付はありません!

-(IBAction)jumpDate

{

NSDateFormatter *dateFormater = [[NSDateFormatter alloc]init];
[dateFormater setDateFormat:@"dd MMMM yyyy  h:mm:ss"];  //dateFormater.dateStyle   =NSDateFormatterLongStyle; //USA date style MMMM-dd-yyyy
[dateFormater setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"CDT"]];

NSDate *todayDate = [[NSDate alloc]init];

[gregDate setText : [dateFormater stringFromDate:todayDate]];

[NSString stringWithFormat:@"dd MMMM yyyy", dayCount];

dayCount++;

if (dayCount >= 365)

{
    dayCount = 365;

    [timerDate invalidate];

}
}
//and the timer

- (void)viewDidLoad
{

NSDateFormatter *dateFormater = [[[NSDateFormatter alloc]init]autorelease];
[dateFormater setDateFormat:@"dd MMMM yyyy"];

NSTimeInterval secondsPerDay = 86400 ; // = 24 * 60 * 60

NSDate *today = [[[NSDate alloc]init]autorelease];
NSDate *tomorrow;
tomorrow = [today dateByAddingTimeInterval:(NSTimeInterval)secondsPerDay];

 [gregDate setText : [NSString stringWithFormat:@" %@ ",tomorrow]];

 dayCount = 1;
 timerDate=[NSTimer scheduledTimerWithTimeInterval:1.0 target:self    selector:@selector(jumpDate)userInfo:nil repeats:YES];


[super viewDidLoad];
}
4

2 に答える 2

1

3つの質問がありますが、すべてがあなたの質問に直接関連しているわけではありません。

  1. なぜ-(IBAction)jumpDateIBActionなのか、コードからこのメソッドを呼び出す場合は、に変更する(void)必要があります。IBActionがそれを呼び出す必要がある場合は、そのボタンのアクションとなる別のメソッドから呼び出します。

  2. userInfoこの呼び出しの前に、コードに不足しているスペースがありますか?
    timerDate=[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(jumpDate)userInfo:nil repeats:YES];

  3. IBOutletがすべて正しく設定されていることを確認しましたか?私はそれを忘れた回数を数えるのをやめました。


[gregDate setText : [NSString stringWithFormat:@" %@ ",tomorrow]];  

gregDateとは何ですか?UILabelを指すIBOutletですか?
そして、あなたはおそらくこれを確認しました、しかし、その呼び出しはretunrを有効な文字列ですか?


IBAction2つの理由から、タイマーからメソッドを呼び出さないでください
。1.設計が悪いと思います。タイマーからも呼び出されるため、このメソッドの役割に混乱が生じています。
2.メソッドシグネチャがNSTimerが必要とするものと一致しません

aSelector:タイマーが起動したときにターゲットに送信するメッセージ。セレクターには次の署名が必要です。-(void)timerFireMethod:(NSTimer *)theTimer

このテキストは、NSTimerクラスリファレンスからのものです。

于 2011-11-12T06:00:33.897 に答える
0

この行を置き換えます:

NSDate *todayDate = [[NSDate alloc]init];

この行で:

NSDate *todayDate = [[NSDate date] dateByAddingTimeInterval:dayCount * 86400];
于 2011-11-12T08:18:42.277 に答える