如何从uitableviewcell显示uidatepicker

我怎样才能显示从UITableViewCell的UIDatePicker ,并让datepicker有一个工具栏在左上angular,你辞职呢? 有没有什么好的教程如何做到这一点?

我最近刚刚做了完全一样的事情。

  1. UITextField插入到您的UITableViewCell (您可能需要创build一个自定义的UITableViewCell具体取决于您希望它显示在UITableView每个dynamic单元上还是单个静态单元上)。
  2. UIDatePickerUIToolbarUITextField创build属性,然后在IB中将UITextField属性连接到在步骤1中创build的UITextField (如果使用的是自定义UITableViewCell类,则这是UITextField属性需要去的地方):

     @property (strong, nonatomic) UIDatePicker * datePicker; @property (strong, nonatomic) UIToolbar * datePickerToolbar; @property (strong, nonatomic) IBOutlet UITextField *textField; ... @synthesize datePicker, datePickerToolbar, textField; 
  3. 设置您的UIDatePickerUIToolbarUITextField

     - (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; } 
  4. 安装dismissPicker方法:

     -(void)dismissPicker:(id)sender{ [textField resignFirstResponder]; } 
  5. 设置datePickerValueChanged方法:

     - (void)datePickerValueChanged:(id)sender{ NSDate *selectedDate = datePicker.date; NSDateFormatter *df = [[NSDateFormatter alloc] init]; [df setDateFormat:@"HH:mm"]; [textField setText:[df stringFromDate:selectedDate]]; } 

注意:在我的代码中,我需要界面来显示时间,因此这里设置的date格式( HH:mm )。 因此,你也会注意到,在我的UIDatePicker初始化代码在viewDidLoad ,我已经将其模式设置为UIDatePickerModeTime 。 对于dateselect,您可能希望将其设置为UIDatePickerModeDate

你可以在UITableViewCell中放入一个不可见的UITextField,并将UITextFields的inputview设置为一个UIDatePicker。 在这里我们的代码:

  yourdatePicker = [[UIDatePicker alloc]init]; yourtextField.inputView = yourdatePicker; 

我正在使用ActionSheetPicker [1]。 它允许你从一个部分重叠当前场景的动作表中显示任何types的select器。 此外,您可以添加button(如取消或“今天”)和标题到视图的顶部。

[1]:Tim Cinel的原始版本: https : //github.com/TimCinel/ActionSheetPicker由哈里·卡拉姆·辛格改进: https : //github.com/Club15CC/ActionSheetPicker固定在我的叉(我认为它蔓延到其他人现在): https : //github.com/booiiing/ActionSheetPicker