我需要一个滑块,用于在12-00 AM到11-45 PM之间的滑块标签中显示实时,步长为15分钟。但我只是不知道该怎么做。是否有人向我提出一些建议?
答案 0 :(得分:2)
如果您只需要带滑块的时间选择器,请使用sliderChanged:handler中的以下代码:
- (IBAction)onSliderChange:(id)sender {
UISlider *slider = (UISlider *)sender;
NSUInteger numberOfSlots = 24*4 - 1; //total number of 15mins slots
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"h-mm a"];
NSDate *zeroDate = [dateFormatter dateFromString:@"12-00 AM"];
NSUInteger actualSlot = roundf(numberOfSlots*slider.value);
NSTimeInterval slotInterval = actualSlot * 15 * 60;
NSDate *slotDate = [NSDate dateWithTimeInterval:slotInterval sinceDate:zeroDate];
[dateFormatter setDateFormat:@"h-mm a"];
self.timeLabel.text = [dateFormatter stringFromDate:slotDate];
}
答案 1 :(得分:0)
创建一个滑块,并在视图控制器中,让滑块更改标签,因为滑块上的值已更改。要设置值的范围,请在属性下更改故事板中的范围(您也可以将更改间隔设置为15的步长)。您可能希望以分钟或类似的方式给它一个间隔,然后将其转换为时间:)
- (IBAction)sliderChanged:(UISlider *)sender
答案 2 :(得分:0)
我正在添加另一个答案来添加代码。是的,您可以从滑块中获取值,然后在将值转换为时间后设置标签的文本。像这样:
// Add 0.5 to slider value and truncate it to an integer by type casting it as integer
int sliderIntValue = (int)([sender value] + 0.5f);
//do some conversion and set the label to the value
self.sliderLabel.text = newLabelText;
答案 3 :(得分:-1)
您可以使用NSTimer每15分钟调用一次方法,并使用当前时间更新滑块/标签。
您可能需要查看NSDateFormatter,为您的约会获取正确的字符串表示可能很有用。