我有一个按钮,当它被点击时,它会改变标签的文字。这是我的控制器模块(happydaysViewController.m)的代码片段:
#import "happydaysViewController.h"
@implementation happydaysViewController
-(IBAction)button {
label.text = @"pop tart";
button.image = @"Costa Rican Frog.jpg";
}
因此,标签文本从空白变为弹出蛋挞,但按钮的背景图像不会从空白变为哥斯达黎加Frog.jpg。实际上,我收到以下错误:
'按钮'未声明
我接近这个错误的方式吗?
答案 0 :(得分:4)
这段代码有很多错误。而不是列出所有内容,我只会告诉你它应该是什么!
happydaysViewController.h文件:
@interface happydaysViewController : UIViewController
@property (nonatomic, strong) IBOutlet UILabel *label; //in IB drag this to your label
@property (nonatomic, strong) IBOutlet UIButton *button; //in IB drag this to your button
-(IBAction)buttonClicked:(UIButton *)sender; //in IB drag you button to this action
@end
happydaysViewController.m文件:
#import "happydaysViewController.h"
@implementation happydaysViewController
@synthesize label;
@synthesize button;
-(IBAction)buttonClicked:(UIButton *)sender
{
label.text = @"pop tart";
UIImage *image = [UIImage imageNamed:@"Costa Rican Frog.jpg"];
[sender setImage:image forState:UIControlStateNormal];
}
@end
所以需要解决的问题(没有特别的顺序):
您无法使用字符串设置图像值,您需要创建一个UIImage对象并将图像文件加载到其中。幸运的是[UIImage imageNamed:...]使这很容易。
按钮可以有不同状态的多个图像(突出显示,选中,禁用等),因此您必须在设置图像时指定状态。
您收到的错误表明您实际上没有一个名为button的属性,这可能是因为您从未将其添加到您的班级,或者可能是因为您已将您的IBAction方法命名为“按钮“这与名为button的属性的getter方法相冲突,该方法也称为”button“。在我的代码中,我将按钮作为参数传递给click方法(如果更改其名称,则需要重新绑定IB中的按钮),a)提供获取按钮的另一种方式,b)更改如果你想在视图控制器上有一个名为button的属性,那么方法的名称就不会发生冲突。
答案 1 :(得分:0)
你必须写下这个:
[[self button] setImage:[NSImage imageNamed:@"Costa Rican Frog.jpg"]];
答案 2 :(得分:0)
“突出显示”是触摸进入和退出控制时发生的控制状态。
在这个例子中,我们将以编程方式创建一个UIButton,以便在触摸时显示按钮更改。
创建一个按钮
- (void)drawButton
{
myButton = [UIButton buttonWithType:UIButtonTypeCustom];
myButton.frame = CGRectMake(80, 50, 70, 70); //set frame for button
UIImage *buttonImage = [UIImage imageNamed:@"icon6.png"];
[myButton setBackgroundImage:buttonImage forState:UIControlStateNormal];
[myButton setTitle:@"Ok" forState:UIControlStateNormal];
[myButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:myButton];
}
- (void)viewDidLoad {
[super viewDidLoad];
[self drawButton];
}
编写一个按钮操作,它将在触摸时更改图像
- (IBAction)buttonClicked:(id)sender
{
UIImage *buttonImage = [UIImage imageNamed:@"home.png"];
[myButton setBackgroundImage:buttonImage forState:UIControlStateHighlighted];
}
在运行应用程序时,您会发现它会在触摸时更改图像。