3

ボタンのクリック後にスライダーに値を設定しようとしましたが、機能しません - スライダーが動きません。コードは間違いなく正常に実行されます。

それはかなり単純なはずですが、私はそれを理解できません。xCode バージョン 4.5.2

ありがとう!


ここに私のコード:

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *debugLabel;
@property (weak, nonatomic) IBOutlet UISlider *slider;

- (IBAction)slider:(id)sender;
- (IBAction)ButtonChangeValue:(id)sender;

@end

ViewController.m

#import "ViewController.h"
@interface ViewController ()
@end

@implementation ViewController
@synthesize slider;

...

- (IBAction)slider:(UISlider *)sender {
    float value = [sender value];
    self.debugLabel.text = [NSString stringWithFormat:@"Value: %f",value];
}

- (IBAction)ButtonChangeValue:(id)sender {
    slider.value = 90;
}
4

8 に答える 8

7

あなたの問題は、スライダーが 0.0 から 1.0 の間の値を受け入れることだと思います (デフォルト値は、 と で変更します_slider.maximumValue) _slider.minimumValue。値を 90 ではなく 0.9 に設定してみてください (90% を意味する場合)。

スライダーが更新されてもアニメーション化されていない場合は、次を使用します。

[_slider setValue:0.9 animated:YES];

self.sliderコードを考えると、代わりにを使用する必要がある場合があることに注意してください_slider

于 2013-01-22T09:23:36.247 に答える
3

使ってみて

    self.slider.value = 90;

それ以外の

    slider.value = 90;
于 2013-01-22T09:21:37.513 に答える
1

私の答えを確認してください

- (void)viewDidLoad
{

 UITapGestureRecognizer *gr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(sliderTapped:)];
    [slider addGestureRecognizer:gr];

}

 - (void)sliderTapped:(UIGestureRecognizer *)g 
    {

        UISlider* s = (UISlider*)g.view;
        if (s.highlighted)
            return; // tap on thumb, let slider deal with it
        CGPoint pt = [g locationInView: s];
        CGFloat percentage = pt.x / s.bounds.size.width;
        CGFloat delta = percentage * (s.maximumValue - s.minimumValue);
        CGFloat value = s.minimumValue + delta;
        [s setValue:value animated:YES];

        NSString *str=[NSString stringWithFormat:@"%.f",[self.slider value]];
        self.lbl.text=str;
    }
于 2013-01-22T09:27:11.287 に答える
1

使用するにはslider.value = 90;

ViewController.h は次のようになります。

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
{
     UISlider *slider;
}
@property (weak, nonatomic) IBOutlet UILabel *debugLabel;
@property (weak, nonatomic) IBOutlet UISlider *slider;

- (IBAction)slider:(id)sender;
- (IBAction)ButtonChangeValue:(id)sender;

@end

@synthesize slider;ViewController.m も忘れないでください。

self.slider.value = 90;それ以外の場合は、またはを使用します_slider.value = 90;

于 2013-01-22T09:34:58.097 に答える
0

おもう 。スライダーの最大値と最小値について言及していないため、デフォルトの最大値と最小値を 0 から 1 に設定しています。したがって、値を 90 に設定することはできません。まず、次のように最大値と最小値を変更します。

Slider.minimumValue = 1;
Slider.maximumValue = 100;

今あなたのことを試してみてください、

Slider.value =90;
于 2013-10-25T10:25:37.217 に答える
0

インターフェイスビルダーを使用しているため、最初に確認することは、ファイルの所有者の IBOutlets に接続されている UI コンポーネント (スライダー、ボタン) です。これは、このような問題の最も一般的な原因です。

次に、スライダーの最小値と最大値を確認します (デフォルトは 0;1 - rdurand で述べたように)。

また、spider1983 も正しいです。slider はプロパティであるため、self.slider (または _slider ですが、この場合は最後のものを使用しないでください) としてアドレス指定できます。

于 2013-01-22T09:29:58.460 に答える