滑块与标签中的实时

时间:2011-12-26 14:54:36

标签: iphone objective-c ios ipad uislider

我需要一个滑块,用于在12-00 AM到11-45 PM之间的滑块标签中显示实时,步长为15分钟。但我只是不知道该怎么做。是否有人向我提出一些建议?

4 个答案:

答案 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,为您的约会获取正确的字符串表示可能很有用。