0

私は iPhone アプリケーションで UIDatePicker を使用しています。日付ピッカーのモードが UIDatePickerModeTime と UIDatePickerModeDate の間で切り替わるボタンをクリックしたままにしています。モードがUIDatePickerModeDateのときにdatepickerの日付を変更すると、モードを切り替えると変更された日付が正しく表示されますが、時間を変更してモードを切り替えると、モードをUIDatePickerModeTimeに再度切り替えると、時刻が午前12:00にリセットされます。なぜこれが起こっているのか、どうすればよいのかわかりません。助けてください。

4

2 に答える 2

1

同様の問題があります。初めて UIDatePickerModeDate から UIDatePickerModeTime に変更したとき、時間は問題ありませんでした。しかし、..Date モードに戻してから ..Time モードに戻すと、時刻が 00:00 になりました。その後、何度モードを変更しても、時刻は常に 00:00 のままでした。Apple の UICatalog アプリの UIDatePicker と同じように、プログラムで UIDatePicker をモデル化しました。この動作は、アプリには存在しません。

あなたの先導を受けて、UIControl 通知時にピッカーを取得してリセットする目的で、保持された @property にピッカーからの NSDate 値を保存しました。ただし、ピッカーが日付モードから時間モードに変更されたときに発生するイベントは見つかりませんでした。私も次のようなことを試しました:

        [myDatePicker addTarget:self action:@selector(getDateTime:) forControlEvents:UIControlEventAllEvents];

もちろん、ピッカーの日付 (または時刻) を変更するとイベントが発生しましたが、前述のように、モードを変更したときではありません。

最終的には、モードを切り替えた上記と同じイベント メソッドをターゲットとする UISegmentedControl (UICatalog アプリと同じ) を使用することになりました。ただし、ピッカーを保存した NSDate 値にリセットすると、時間は 00:00 のままでした。次に、NSLog を使用して、保存された値が問題ないことを確認し、時間値の部分も 00:00 に変更されていることを発見しました! 新しい NSDate 値を保存していなかったので、これは実に奇妙でした。元の保存された値は、自然に変更されました!

私はまだ問題を調査しており、特に NIB をサポートせずに UIDatePicker がプログラムで追加された場合は、バグと呼ぶことに非常に近いです。

更新: 私の最終的な解決策は、あなたのものとほぼ同じでした。何らかの理由で、保存された日付が NSDate 値として保存されたときにエラーが続きました。それを NSString として保存し、両方の方法で型キャストするとうまくいきました。

self.saveDate = (NSString*)self.myDatePicker.date;

...

[self.myDatePicker setDate:(NSDate*)self.saveDate animated:NO];

また、GCD dispatch_async ブロックを介して日付を取得し、外部デバイスに保存しているため、プロパティの self. 表記も必要でした (main_que でも)。

最終的な結論:

ピッカーがアクセスされるたびに UIDatePicker の日付を設定することは、バグではなく必要な要件であると確信しています。Apple の UICatalog アプリを使用して、日付を今日に 1 回だけ設定してから日付と時刻モードを切り替えると、アプリはまったく同じ動作を示します。日付は保持されますが、時刻は 00:00 にリセットされます。日付または時刻以外のモードに切り替えて元に戻すと、すべてのモードがフロア値にリセットされます。

于 2012-08-16T21:32:50.870 に答える
0

日付ピッカーを表示するときに、日付ピッカーからの日付を格納するプロパティとして宣言した Date オブジェクトを使用しました。日付ピッカーで日付を変更すると、保存された日付が更新されました(UIControl通知を使用) 日付ピッカーのモードを変更すると、同じ日付が日付ピッカーに割り当てられました。

これはかなり単純なことだと理解していますが、以前は単純な Date オブジェクトを取得して同じことを試みていましたが、機能しませんでした。それをプロパティにすることでうまくいきました

于 2011-07-25T10:17:19.150 に答える