UIDatePicker
UITableViewCell から表示するにはどうすればよいdatepicker
ですか? 上部にツールバーを表示して、辞任することができますか? これを行う方法に関する良いチュートリアルはありますか?
7621 次
3 に答える
4
私は最近、まったく同じことをしなければなりませんでした。
- に を挿入
UITextField
しますUITableViewCell
(カスタムを作成する必要がある場合があります)。これは、カスタムセルのすべての動的セルに表示するか、単一の静的セルUITableViewCell
に表示するかによって異なります)。UITableView
a
UIDatePicker
、 aUIToolbar
、および aUITextField
のプロパティを作成し、IB でそのUITextField
プロパティをUITextField
ステップ 1 で作成したものに接続します (カスタムUITableViewCell
クラスを使用している場合は、そこにUITextField
プロパティを配置する必要があります)。@property (strong, nonatomic) UIDatePicker * datePicker; @property (strong, nonatomic) UIToolbar * datePickerToolbar; @property (strong, nonatomic) IBOutlet UITextField *textField; ... @synthesize datePicker, datePickerToolbar, textField;
UIDatePicker
、UIToolbar
、および をセットアップしますUITextField
。- (void)viewDidLoad { // Initialise UIDatePicker datePicker = [[UIDatePicker alloc] init]; datePicker.datePickerMode = UIDatePickerModeTime; [datePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged]; // method to respond to changes in the picker value // Setup UIToolbar for UIDatePicker datePickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 44)]; [datePickerToolbar setBarStyle:UIBarStyleBlackTranslucent]; UIBarButtonItem *extraSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(dismissPicker:)]; // method to dismiss the picker when the "Done" button is pressed [datePickerToolbar setItems:[[NSArray alloc] initWithObjects: extraSpace, doneButton, nil]]; // Note: If you're using dynamic cells, the below 2 lines need to be in your cellForRowAtIndexPath method instead. // Set UITextfield's inputView as UIDatePicker textField.inputView = datePicker; // Set UITextfield's inputAccessoryView as UIToolbar textField.inputAccessoryView = datePickerToolbar; }
設定
dismissPicker
方法:-(void)dismissPicker:(id)sender{ [textField resignFirstResponder]; }
設定
datePickerValueChanged
方法:- (void)datePickerValueChanged:(id)sender{ NSDate *selectedDate = datePicker.date; NSDateFormatter *df = [[NSDateFormatter alloc] init]; [df setDateFormat:@"HH:mm"]; [textField setText:[df stringFromDate:selectedDate]]; }
注: 私のコードでは、時刻を表示するためのインターフェイスが必要だったため、ここで日付形式を設定しました ( HH:mm
)。UIDatePicker
このため、 の初期化コードでviewDidLoad
、モードを に設定していることにも気付くでしょうUIDatePickerModeTime
。日付を選択する場合は、 に設定することをお勧めしますUIDatePickerModeDate
。
于 2013-07-21T20:02:30.403 に答える