Ios 如何从uitableviewcell显示uidatepicker
如何从UITableViewCell中显示Ios 如何从uitableviewcell显示uidatepicker,ios,objective-c,cocoa-touch,Ios,Objective C,Cocoa Touch,如何从UITableViewCell中显示UIDatePicker,并使datepicker的顶部有一个工具栏供您使用?有关于如何执行此操作的好教程吗?您可以在UITableViewCell中放置一个不可见的UITextField,并将UITextFields inputview设置为UIDatePicker。下面是代码: yourdatePicker = [[UIDatePicker alloc]init]; yourtextField.inputView = yourdatePicker
UIDatePicker
,并使datepicker
的顶部有一个工具栏供您使用?有关于如何执行此操作的好教程吗?您可以在UITableViewCell中放置一个不可见的UITextField,并将UITextFields inputview设置为UIDatePicker。下面是代码:
yourdatePicker = [[UIDatePicker alloc]init];
yourtextField.inputView = yourdatePicker;
我正在使用ActionSheetPicker[1]。它允许您从部分与当前场景重叠的动作表中显示任何类型的选择器。此外,还可以在视图顶部添加按钮(如“取消”或“今天”)和标题 [1] :Tim Cinel的原始版本: Hari Karam Singh的改进:
修复了我的fork中的不赞成(我想现在它已经传播到了其他人中):我最近不得不做完全相同的事情
UITextField
插入UITableViewCell
(您可能需要创建一个自定义的UITableViewCell
,具体取决于您希望它显示在UITableView
的每个动态单元格还是单个静态单元格上)UIDatePicker
、UIToolbar
和UITextField
创建属性,然后在IB中将UITextField
属性连接到步骤1中创建的UITextField
(如果您使用的是自定义的UITableViewCell
类,则需要使用UITextField
属性):
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;
}
dismissspicker
方法:
-(void)dismissPicker:(id)sender{
[textField resignFirstResponder];
}
- (void)datePickerValueChanged:(id)sender{
NSDate *selectedDate = datePicker.date;
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"HH:mm"];
[textField setText:[df stringFromDate:selectedDate]];
}
datePickerValueChanged
方法:
-(void)dismissPicker:(id)sender{
[textField resignFirstResponder];
}
- (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
视图加载中的初始化代码中,我已将其模式设置为UIDatePickerModeTime
。对于日期选择,您可能希望将其设置为UIDatePickerModeDate,这非常好,但您能否详细说明几件事。首先,我得到了这个选择器ror当我试图辞去日期选取者的职务时:-[uibarbuttoneim辞职FirstResponder]:无法识别的选择器,以及,您是否可以解释我将如何将textfields文本设置为用户设置的日期。它是否类似于textField.text=??@Auser Oops,请检查我的dismissPicker
代码上的编辑。此外,我还添加了一个新方法的代码,以对UIControlEventValueChanged
以及cod做出反应e在UIDatePicker
上设置它。这是一个非常棒的人。谢谢你花时间来指导我。非常感谢。@Auser别担心,希望这对你和我一样有用!:)太棒了,我知道会的:]