在 TimePicker 中选择后时间未在标签中更新
Time not updating in label after selection in TimePicker
我是 IOS 的新手,我需要在标签中显示带有当前时间的时间选择器,并在时间选择器中更改该值也在同一标签中更新。之后我也想在选择后关闭那个时间选择器。
时间选择器编码:
- (IBAction)pickuptime1:(id)sender {
self.datePicker = [[UIDatePicker alloc] init];
self.datePicker.frame = CGRectMake(0, 250,325,300); // set frame as your need
self.datePicker.datePickerMode = UIDatePickerModeTime;
[self.view addSubview: self.datePicker];
//UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(40, 70, 300, 50)];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"hh:mm a"];
NSString *currentTime = [dateFormatter stringFromDate:self.datePicker.date];
label2.text = currentTime;
[datePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:datePicker];
[self.view addSubview:label2];
}
方法编码:
- (void)dateChanged:(id)sender
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"hh:mm a"];
NSString *currentTime = [dateFormatter stringFromDate:self.datePicker.date];
NSLog(@"%@", currentTime);
}
已接受
实现委托方法,pickerView:didSelectRow:inComponent:。当您 select 一个项目时,选择器视图会调用它。根据行和组件从数组中获取值,并填充标签。
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
self.label.text = _myArray[row];
}
或者也检查这个
- 您无法更改 UIDatePicker 的外观。
- 您可以将其存储在 属性 中,并在需要时将其从
超级视图调用 [datePicker removeFromSuperview];
您需要日期格式化程序才能从日期中获取字符串值。有些喜欢
这个:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[日期格式化程序 setDateStyle:NSDateFormatterMediumStyle];
[日期格式化程序 setTimeStyle:NSDateFormatterShortStyle];
并设置带有日期的标签:
self.dateLabel.text = [dateFormatter stringFromDate:datePicker.date];
它非常简单,您只需要实现一个方法即可隐式更新日期和时间,请查看下面的代码。
-(IBAction)done_action:(id)sender{
self.viewDatePicker.hidden=YES;
[self.datePicker setDatePickerMode:UIDatePickerModeDate];
[self.datePicker addTarget:self action:@selector(onDatePickerValueChanged:) forControlEvents:UIControlEventValueChanged];
_yourCustomLabel.text = [dateFormatter stringFromDate:self.datePicker.date];
}
// method invokes while scrolling on date picker
-(IBAction)onDatePickerValueChanged:(UIDatePicker *)datePicker{
// yourLabel to show current time while scroll on datePicker
self.yourLabel.text = [dateFormatter stringFromDate:datePicker.date];
}
将您的 datePicker 放在最初隐藏或相应自定义的视图中..
我是 IOS 的新手,我需要在标签中显示带有当前时间的时间选择器,并在时间选择器中更改该值也在同一标签中更新。之后我也想在选择后关闭那个时间选择器。
时间选择器编码:
- (IBAction)pickuptime1:(id)sender {
self.datePicker = [[UIDatePicker alloc] init];
self.datePicker.frame = CGRectMake(0, 250,325,300); // set frame as your need
self.datePicker.datePickerMode = UIDatePickerModeTime;
[self.view addSubview: self.datePicker];
//UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(40, 70, 300, 50)];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"hh:mm a"];
NSString *currentTime = [dateFormatter stringFromDate:self.datePicker.date];
label2.text = currentTime;
[datePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:datePicker];
[self.view addSubview:label2];
}
方法编码:
- (void)dateChanged:(id)sender
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"hh:mm a"];
NSString *currentTime = [dateFormatter stringFromDate:self.datePicker.date];
NSLog(@"%@", currentTime);
}
已接受 实现委托方法,pickerView:didSelectRow:inComponent:。当您 select 一个项目时,选择器视图会调用它。根据行和组件从数组中获取值,并填充标签。
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
self.label.text = _myArray[row];
}
或者也检查这个
- 您无法更改 UIDatePicker 的外观。
- 您可以将其存储在 属性 中,并在需要时将其从 超级视图调用 [datePicker removeFromSuperview];
您需要日期格式化程序才能从日期中获取字符串值。有些喜欢 这个:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [日期格式化程序 setDateStyle:NSDateFormatterMediumStyle]; [日期格式化程序 setTimeStyle:NSDateFormatterShortStyle];
并设置带有日期的标签:
self.dateLabel.text = [dateFormatter stringFromDate:datePicker.date];
它非常简单,您只需要实现一个方法即可隐式更新日期和时间,请查看下面的代码。
-(IBAction)done_action:(id)sender{
self.viewDatePicker.hidden=YES;
[self.datePicker setDatePickerMode:UIDatePickerModeDate];
[self.datePicker addTarget:self action:@selector(onDatePickerValueChanged:) forControlEvents:UIControlEventValueChanged];
_yourCustomLabel.text = [dateFormatter stringFromDate:self.datePicker.date];
}
// method invokes while scrolling on date picker
-(IBAction)onDatePickerValueChanged:(UIDatePicker *)datePicker{
// yourLabel to show current time while scroll on datePicker
self.yourLabel.text = [dateFormatter stringFromDate:datePicker.date];
}
将您的 datePicker 放在最初隐藏或相应自定义的视图中..