1

我正在尝试将 UISlider 放入我的 UIToolbar 并从中获取价值并进行处理。我还希望能够通过其他方法更改slider.value。所以,我自己为 UISlider 设置了它(不是在 UIToolBar 上),一切正常。然后,当我将它放入 UIToolBar 时,该值停止与它之间的发送(每当它发生变化时我都会对其进行 NSLogging,并且我不断将 0 返回给我)。这是我的代码的相关部分 - 有人有什么想法吗?

- (void)setupToolBarAndSlider {
    CGRect frame = CGRectMake(0.0, 0.0, 200.0, 30.0);
    UISlider *slider = [[UISlider alloc] initWithFrame:frame];
    [slider addTarget:self action:@selector(sliderValueChanged) forControlEvents:UIControlEventValueChanged];
    [slider setBackgroundColor:[UIColor clearColor]];
    slider.minimumValue = 0;
    slider.maximumValue = 8;
    slider.continuous = YES;
    slider.value = questionNumberForArray;
    //Change slider for UIToolbar
    UIBarButtonItem *skipQuestionSlider = [[UIBarButtonItem alloc] initWithCustomView:slider];
    // Set the width of aSlider
    [skipQuestionSlider setWidth:400.0];
    //Set up UIToolBar with Slider in it.
    UIToolbar *toolBar;
    CGRect rect2 = CGRectMake(0, toolBar.frame.origin.y , self.view.frame.size.width , 44);
    toolBar = [[UIToolbar alloc]initWithFrame:rect2];
    toolBar.barStyle = UIBarStyleBlackTranslucent;
    [toolBar setItems:[NSArray arrayWithObjects:skipQuestionSlider, nil]];
    [self.view addSubview:toolBar];
}
- (void)sliderValueChanged {
    NSInteger roundedSliderNumber = round(skipQuestionSlider.value);
    NSLog(@"Slider Value = %d", roundedSliderNumber);
} 

山姆

4

1 回答 1

2

UIBarButtonItem (在您的情况下,skipQuestionSlider)没有 value 属性,它只是包含该项目。您需要引用您放入 UIBarButtonItem 的项目。

NSInteger roundedSliderNumber = round(slider.value);

于 2012-07-10T14:04:26.443 回答