Objective C/iPhone - 如何将UISlider绑定到代码

laa*_*rsk 2 iphone objective-c uilabel uislider

我刚刚开始使用Objective C,但我已经遇到了一个问题:当我在过去这样做时,我没有遇到任何问题:我制作了一个新的UISlider,点击它,CTRL将一条蓝线拖到了代码,然后以某种方式我能够读取它的值.

但是,我现在遇到的问题是我不能再画那些线了.通过搞乱我设法让按钮工作,但滑块不起作用.我的Mainwindow.xib有iSaturateViewController类,iSaturateViewController.xib已经有了整个界面.

如何在不能绘制该线的情况下使UISlider工作?

我现在怎么做:(在iSaturateViewController.h中)

#import <UIKit/UIKit.h>

@interface iSaturateViewController : UIViewController {
    UISlider * satSlider;
    UILabel * satLabel;
}

@property (nonatomic, retain) IBOutlet UISlider * satSlider;
@property (nonatomic, retain) UILabel * satLabel;

-(IBAction) changeSaturation:(id) sender;

@end
Run Code Online (Sandbox Code Playgroud)

(在iSaturateViewController.m中):

@synthesize satLabel,satSlider;

-(IBAction) changeSaturation:(id)sender {
    satLabel.text = [[NSString alloc] initWithFormat:@"Saturation:  %d ", (Float32)satSlider.value];
     NSLog(@"%f", satSlider.value);
}
Run Code Online (Sandbox Code Playgroud)

在NSLog显示的那一刻:0.00000000

另外,我将Identity属性中的Label设置为:satSlider(slider)和satLabel(label).

只是为了澄清我的目标:

我希望滑块(satSlider)值通过函数changeSaturation显示在UILabel(satLabel)中.

我怎样才能做到这一点?

Raf*_*fAl 6

添加方法声明:

-(IBAction) changeSaturation:(id)sender;
Run Code Online (Sandbox Code Playgroud)

到头文件iSaturateViewController.h

然后,将UISlider 的Value Changed操作分配给changeSaturation方法.右键单击滑块并将Value Changed拖动到文件所有者并连接它们.它应该工作.

你也可以试试这个:

-(IBAction)changeSaturation:(id)sender {

     UISlider *slider = (UISlider *)sender;
     satLabel.text = [NSString stringWithFormat:@"Saturation: %f", slider.value];
     NSLog(@"Saturation: %f", slider.value);
}
Run Code Online (Sandbox Code Playgroud)

关于UILabel - 添加IBOutlet并在Interface Builder中连接它.界面应该是这样的:

#import <UIKit/UIKit.h>

@interface iSaturateViewController : UIViewController {
    IBOutlet UISlider * satSlider;
    IBOutlet UILabel * satLabel;
}

@property (nonatomic, retain) IBOutlet UISlider * satSlider;
@property (nonatomic, retain) IBOutlet UILabel * satLabel;

-(IBAction) changeSaturation:(id) sender;

@end
Run Code Online (Sandbox Code Playgroud)

如果有效,请告诉我.