我正在我的应用程序中创建搜索功能,但是我在查找UISlider的代码时遇到了一些麻烦。滑块在故事板中创建并连接起来。我有一个.plist,其中包含一系列字典作为信息源。这些词典包含有关葡萄酒的信息。
滑块应该代表字典中“价格”键的值。我为它选择了数字,所以有些像78,900000000001。换句话说,他们需要两位小数格式。
minimumValue =字典中的最低值,向下舍入到最接近的10(如果最低值= 67,90,则minimumValue = 60),如果这不太复杂的话。
maximumValue =最高值,但向上舍入到最接近的10。
用户可以设置可选的最低价格,因此默认位置应为minimumValue。
我希望它在滑动时按5个数字步进,如70,75,80,85,90等
到目前为止,这是UISlider的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.title = @"Search";
NSString *path = [[NSBundle mainBundle] pathForResource:@"Wines" ofType:@"plist"];
allObjectsArray = [[NSMutableArray alloc] initWithContentsOfFile:path];
minSlider.continuous = YES;
[minSlider setMinimumValue: ]; // Lowest value rounded down to closest 10
[minSlider setMaximumValue: ]; // Highest value rounded up to closest 10
[minSlider addTarget:self
action:@selector(minValueChanged:)
forControlEvents:UIControlEventValueChanged];
minText.text = minSlider.minimumValue // <--- or something like that
}
- (void)minValueChanged:(UISlider*)sender
{
// And something here for change of value and text field
minText.text = current slider value
}
你可以帮我完成这个吗?在我询问之前,我已根据我从研究中学到的东西开始了。 :)
答案 0 :(得分:1)
这取决于你的plist是如何构造的,但是你没有告诉我们......我假设它看起来像
<array> <dict> <key>name</key> <string>Bordeaux</string> <key>price</key> <real>75.40</real> </dict> <dict> <key>name</key> <string>Chardonnay</string> <key>price</key> <real>29.90</real> </dict> </array>
这是确定最小值和最大值的方法:
NSNumber *minValue = [allObjectsArray valueForKeyPath:@"@min.price"];
NSNumber *maxValue = [allObjectsArray valueForKeyPath:@"@max.price"];
这是你如何围绕数字:
float roundedDown = ((int)[minValue floatValue]/10)*10.0;
float roundedUp = ((int)[maxValue floatValue]/10)*10.0 +10;
这是设置滑块最小值的方法:
minSlider.minimumValue = [minValue floatValue];
这就是你如何使标签只显示5的倍数:
-(void)minValueChanged:(UISlider*)sender {
minText.text = [NSString stringWithFormat:@"%.0f",
5.0 * ((int) (sender.value / 5) + 0.5)];
}