井原プロダクトのBLOG

Since 2013。個人でアプリ作っています。

UIDatePickerのCount Down Timer Modeで最初の変更が反映されない [objective-c]

メトロノームのタイマー機能を更新していて、今のTempo表示をそのまま時間として使用する方法から、ピッカーを使うようにしていたところハマりました。UIDatePickerでValue Changedのイヴェントが起きたときのActionを設定したのですが、何と起動して初回だけ、このMethodが呼ばれないのです。

色々と調べたのですが、stackOverFlowなんかではBug扱いされていて、結局初回だけ起動されないのなら、初回はViewDidLoadで設定して、ユーザの変更は2回目以降という事になるようにというのが有効な対処でした。というわけで、viewDidLoadに以下を追加。初期値を0時間1分としたかったので、こうしました。

やれやれ

    NSDateComponents *yourdate = [NSDateComponents new];
    [yourdate setHour:0];
    [yourdate setMinute:1];
    NSCalendar *cal = [NSCalendar currentCalendar];
    NSDate* date = [cal dateFromComponents:yourdate];
    [_datePicker setDate:date animated:YES];