2009-08-30 3 views
2

私は処理中ですUIApplicationSignificantTimeChangeNotification私のアプリでは、アプリケーション内の他のすべての画面は、深夜が来ると正常に更新されます。私が問題を抱えているのは、UIDatePickerです。 UIPickerViewにはrefreshAllComponentsのメソッドがあります。これは、深夜の変更時に別の画面で更新する方法です。私はUIDatePickerのために同じことを持っていると思いますが、残念ながら、私はそれを更新する方法を見つけることができませんでした、そしてそれはすでに昨日ですが今日はは、今日まま。抜け道?UIDatePicker対UIApplicationSignificantTimeChangeNotification

+0

は、この同じ問題が発生して - あなたは今までに修正を見つけましたか? –

+1

残念ながら、いいえ。 –

答えて

1

あなたは、単にアニメーションの引数として日付引数[NSDate日付]とYESとして渡すその方法

- (void)setDate:(NSDate *)date animated:(BOOL)animated 

を使用してUIDatePickerをリフレッシュすることができます。 これは深夜の[NSDate date]の後に正しい現在の日付を生成する必要があるために機能するはずです。

+0

同じくそ。はい、それは次の日に移動しますが、今日は何だったのですか?それはすでに昨日です。 –

2

なぜ新しいインスタンスでUIDatePickerを置き換えないのですか?

UIDatePicker *oldPicker = self.myDatePicker; 
UIDatePicker *newPicker = [[UIDatePicker alloc] initWithFrame:oldPicker.frame]; 
[newPicker setDate:oldPicker.date animated:NO]; 
[[oldPicker superview] addSubview:newPicker]; 
[oldPicker removeFromSuperview]; 
self.myDatePicker = newPicker; 
[newPicker release]; 

上記のコードでは、oldPickerをnewPickerに置き換え、設定をコピーして誰もその変更に気付かないようにします。ピッカービューへの他の参照がある場合は、ピッカービューも更新する必要があります。

+0

これを回避策として使用できます。しかし、私は視覚的に見栄えがよく分からない。とにかくあなたの考えをお寄せいただきありがとうございます。 –

+0

スワップは瞬時に行われるため、ユーザーは視覚的に気付かないでください。または、アニメーションを有効にして、ユーザーが変更をクロスフェードとして見られるようにすることもできます。いずれにしても、それは気にならないはずです。 – benzado

0

これはかなり古い話ですが、Googleで見つけたように、他の人もそうです。私の仕事は何 は:

[datePicker becomeFirstResponder]; 
[datePicker reloadInputViews]; 
+0

これが適切な答えであれば、申し訳ありません。私はそれをプロンプトする時間がないので、私はそれを「点数付け」していません。 –

+0

他の人に役立つ限り、問題はありません:) – Zoleas