+ (NSArray*) getSliderNumbers {
NSArray *sliderNumbers = [NSArray arrayWithObjects:@"10",
@"20",
@"30",
@"40",
@"50",
@"60",
@"70",
@"80",
@"90",
@"100",
@"150",
@"200",
@"250",
@"300",
@"350",
@"400",
@"450",
@"500",
@"600",
@"700",
@"800",
@"900",
@"1",
@"1.5",
@"2.0",
@"2.5",
@"3.0",
@"3.5",
@"4",
@"4.5",
@"5",
@"5.5",
@"6",
@"6.5",
@"7",
@"7.5",
@"8",
@"8.5",
@"9",
@"9.5",
@"10",
@"15",
@"20",
@"25",
@"30",
@"35",
@"40",
@"45",
@"50",
@"55",
@"60",
@"65",
@"70",
@"75",
@"80",
@"85",
@"90",
@"95",
@"100",
@"200",
@"300",
@"400",
@"500",
@"600",
@"700",
@"800",
@"900",
nil];
return sliderNumbers;
}
以上在實例化時被加載到一個數組:
設置滑塊:
customSlider.minimumValue = 0.0f;
customSlider.maximumValue = (CGFloat)[sliderNumbers count] - 1;
customSlider.continuous = YES;
customSlider.value = customSlider.maximumValue;
呼籲UIControlEventValueChanged
- (void) sliderMove:(UISlider*) theSlider {
NSInteger numberLookup = lroundf([theSlider value]);
NSString *distanceString = [sliderNumbers objectAtIndex:numberLookup];
CGFloat distanceInMeters;
if (numberLookup > 21) {
[self.indicator.indicatorLabel setText:[NSString stringWithFormat:@"%@ km", distanceString]];
distanceInMeters = [distanceString floatValue] * 1000;
} else {
[self.indicator.indicatorLabel setText:[NSString stringWithFormat:@"%@ m", distanceString]];
distanceInMeters = [distanceString floatValue];
}
if (oldDistanceInMeters != distanceInMeters) {
[self.delegate distanceSliderChanged:distanceInMeters];
oldDistanceInMeters = distanceInMeters;
}
}
此方法甚至負責格式化的用戶界面的字符串,例如「200米」或「1.5公里」,然後使用以米爲單位的距離編號更新委託,以便在使用謂詞對結果進行排序時使用。
現在我用蘋果數字,使我想要的實際數字(通過輸入一些數字,選擇並拖動。這使得Numbers在相同的時間間隔內產生數字)我做了大約75個數字。然後我導出爲CSV,通過Textmate運行並做了一些正則表達式來獲得數字作爲字符串@「number」, 將數字粘貼到數組中,並將滑塊拉出來: \t NSInteger numberLookup = lroundf([slider值]); \t NSString * distanceString = [sliderNumber objectAtIndex:numberLookup]; 我將滑塊分鐘設置爲0,最大爲[slideNumbers count]。 我仍然有興趣聽到想法:) – RickiG 2010-05-11 18:24:18