UIDatePicker で非常に奇妙な動作が発生しています。IBOutlet UIDatePicker *datePicker; として .h ファイルで宣言された日付ピッカーを含むビューがあります。非アトミックおよび保持プロパティを使用します。datePicker は IB ファイルで適切にリンクされています。
コードでは、次のコードを使用して UICONtrolEventValueChanged を呼び出す最小、最大、初期の日付とアクションを設定しています
If (!currentDate) {
initialDate = [NSDate date];
} else {
initialDate = currentdate;
}
[datePicker setMinimumDate:[NSDate date]];
[datePicker setMaximumDate:[[NSDate date] addTimeInterval:5 * 365.25 * 24 * 60 * 60]]; // to get upto 5 years
[datePicker setDate:initialDate animated:YES];
[datePicker addTarget:self action:@selector(getDatePickerValue:) forControlEvents:UIControlEventValueChanged];
getDatePickerValue では、datePicker.date を使用して新しい日付を取得します。
ビューが (完了ボタンを使用して) 閉じられると、datePicker.date を使用して日付の現在の値を取得します。
ビューが「currentDate」なしで呼び出された場合、ピッカーは「今日の日付」を返します。これは、pickerView が「初めて」呼び出されたときに発生します。「現在の日付」を指定せずにビューを呼び出すたびに、今日とは異なる日付が返されます。そう、
最初に今日の日付を取得すると、2010 年 6 月 9 日と
します。2 回目は datePicker.date が 2010 年 6 月 10 日を返します
。常にインクリメンタルであるとは限りませんが、ほとんどはインクリメンタルです。
NSLogs を配置し、最初の日付が正しく設定されていることを確認しました。
問題はデバイス (OS 3.0) のみにあり、シミュレーターでは再現されません。
私が間違ったことをしたことを見つけることができません。他の誰かが同様の問題に遭遇し、これを解決するのを手伝ってくれることを願っています.