我刚刚开始使用 Objective C,但我已经遇到了一个问题: 当我过去这样做时,我没有遇到任何问题: 我制作了一个新的 UISlider,单击它,按住 CTRL 键将一条蓝线拖到代码中,然后不知何故我能够读取它的值。
但是,我现在遇到了无法再画这些线的问题。 通过乱搞,我设法让按钮正常工作,但 slider 不起作用。 我的 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
(在 iSaturateViewController.m 中):
@synthesize satLabel,satSlider;
-(IBAction) changeSaturation:(id)sender {
satLabel.text = [[NSString alloc] initWithFormat:@"Saturation: %d ", (Float32)satSlider.value];
NSLog(@"%f", satSlider.value);
}
此时 NSLog 显示:0.00000000
此外,我已将 Identity 属性中的 Label 设置为:satSlider( slider )和 satLabel(标签)。
只是为了澄清我的目标:
我希望通过函数changeSaturation 在 UILabel (satLabel) 中显示 slider (satSlider) 值。
我该怎么做?
最佳答案
添加方法声明:
-(IBAction) changeSaturation:(id)sender;
到头文件iSaturateViewController.h
然后,将 UISlider 的“Value Changed”操作分配给您的“changeSaturation”方法。右键单击 slider 并将值更改拖动到文件所有者并连接它们。它应该可以工作。
您也可以尝试这个:
-(IBAction)changeSaturation:(id)sender {
UISlider *slider = (UISlider *)sender;
satLabel.text = [NSString stringWithFormat:@"Saturation: %f", slider.value];
NSLog(@"Saturation: %f", slider.value);
}
关于 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
让我知道它是否有效。
关于iphone - Objective C/iPhone - 如何将 UISlider 绑定(bind)到代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8480598/