IOS:点击时如何更改按钮的背景图像?

时间:2012-01-26 00:34:47

标签: iphone ios ios4

我有一个按钮,当它被点击时,它会改变标签的文字。这是我的控制器模块(happydaysViewController.m)的代码片段:

#import "happydaysViewController.h"

@implementation happydaysViewController

-(IBAction)button {

    label.text = @"pop tart";
    button.image = @"Costa Rican Frog.jpg";
}

因此,标签文本从空白变为弹出蛋挞,但按钮的背景图像不会从空白变为哥斯达黎加Frog.jpg。实际上,我收到以下错误:

'按钮'未声明

我接近这个错误的方式吗?

3 个答案:

答案 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

所以需要解决的问题(没有特别的顺序):

  1. 您无法使用字符串设置图像值,您需要创建一个UIImage对象并将图像文件加载到其中。幸运的是[UIImage imageNamed:...]使这很容易。

  2. 按钮可以有不同状态的多个图像(突出显示,选中,禁用等),因此您必须在设置图像时指定状态。

  3. 您收到的错误表明您实际上没有一个名为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];

}

在运行应用程序时,您会发现它会在触摸时更改图像。