SIN@SAPPOROWORKSの覚書

C#を中心に、夜な夜な試行錯誤したコードの記録です。

【XamarinによるiOS超入門 】 日付ピッカー ( UIDatePicker )

【 Xamarin 記事一覧 】 【XamarinによるiOS超入門 】


1 コントロールの配置

f:id:furuya02:20150115041603p:plain:w150:left


日付ピッカー(UIDatePicker)は、日付、時間、またはその両方を選択するコントロールです。

このコントロールを配置する基本的なコードは次のとおりです。

動作モードに日付選択を指定しています。また、表示位置は、View.Boundsで画面のサイズを取得し、そこから画面中央の領域を計算しています。
※コントロール内の文字等の大きさは最適化されており変更できません。表示モードによっては、画面横幅いっぱいでないと表示できません。

 public override void ViewDidLoad() {
    base.ViewDidLoad();
            
    //日付ピッカーのサイズ
    const int width = 250; 
    const int height = 250;
    //日付ピッカーの生成
    var picker = new UIDatePicker();
    //動作モード(日付選択)
    picker.Mode = UIDatePickerMode.Date;
    //画面の中央に配置
    picker.Frame = new CGRect((View.Bounds.Width - width)/2, (View.Bounds.Height - height)/2, width, height);

     //ビューに追加
    View.AddSubview(picker);
}

2 動作モード

動作モードは、下記の4種類から選択可能です。
f:id:furuya02:20150115055641p:plain

UIDatePickerMode.Date //日付
UIDatePickerMode.Time //時間
UIDatePickerMode.DateAndTime //日付および時間
UIDatePickerMode.CountDownTimer //カウントダウンタイマー

ストーリーボードを使用している場合は、下記のとおりです。
f:id:furuya02:20150115055359p:plain

※CountDownTimerは、タイマー機能を実装しているわけではありません。あくまで時刻を設定/表示するのみです。

3 デフォルト値と選択範囲の指定

(1)デフォルト値

プロパティDate(NSDate)を設定することで、デフォルト値を設定できます。

//現在時刻に設定する
picker.Date = NSDate.Now;
//2010.01.01に設定する
//picker.Date = DateTime.SpecifyKind(DateTime.Parse("2010-01-01"), DateTimeKind.Local);

ストーリーボードを使用している場合も、プロパティ「Date」で指定できます。
Current Dateを選択した場合
f:id:furuya02:20150115044729p:plain
Customを選択した場合
f:id:furuya02:20150115044726p:plain

(2)選択範囲

プロパティMinimumDate(NSDate)とMaximumDate(NSDate)で選択範囲を指定できます。

//2015.01.01から10日間を選択範囲とする
var start = DateTime.Parse("2015-01-01");
var end = start.AddDays(9);
picker.MinimumDate = DateTime.SpecifyKind(start, DateTimeKind.Local); 
picker.MaximumDate = DateTime.SpecifyKind(end, DateTimeKind.Local);

ストーリーボードを使用している場合も、チェックすることで有効になります。
f:id:furuya02:20150115044728p:plain


4 インターバル

プロパティMinuteIntervalで、指定できる間隔を指定できます。(単位は分であり、秒単位では指定できません。)

picker.MinuteInterval = 10;//10分間隔で指定

ストーリーボードを使用している場合、プロパティ「Interval」で指定します。
f:id:furuya02:20150115060718p:plain

5 ローケル

Localを設定することで、国際化対応が可能です。

picker.Locale = new NSLocale("ja_JP");//日本語表示

f:id:furuya02:20150115060848p:plain


図は、en(English)とja_JP(Japanese)を指定した場合の違いです。
f:id:furuya02:20150118155355p:plain:w150

参考:About Internationalization and Localization


6 イベント

各種のイベントが取得可能ですが、通常よく使用されるのは、ValueChanged(選択値変化)でしょうか。

f:id:furuya02:20150118152726p:plain

f:id:furuya02:20150118155617p:plain

8 参考にさせて頂いたページ

UIKit User Interface Catalog: Date Pickers
iOS 7 から始める UIKit 入門 コントロール編 #3 Date Picker | Developers.IO
iOSヒューマンインターフェイスガイドライン: コントロール部品
c# - Create NSDate Monotouch - Stack Overflow


【 Xamarin 記事一覧 】 【XamarinによるiOS超入門 】