如何从uitableviewcell显示uidatepicker
我怎样才能显示从UITableViewCell的UIDatePicker
,并让datepicker
有一个工具栏在左上angular,你辞职呢? 有没有什么好的教程如何做到这一点?
我最近刚刚做了完全一样的事情。
- 将
UITextField
插入到您的UITableViewCell
(您可能需要创build一个自定义的UITableViewCell
具体取决于您希望它显示在UITableView
每个dynamic单元上还是单个静态单元上)。 -
为
UIDatePicker
,UIToolbar
和UITextField
创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;
-
设置您的
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]]; }
注意:在我的代码中,我需要界面来显示时间,因此这里设置的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