点击后更改UIButton的文本或背景

时间:2012-11-29 11:11:51

标签: objective-c ios uibutton

我尝试在3个按钮之一上点击的依赖项中更改3个按钮的外观(TitleLable +背景)和TextView的文本。 (像标签内容一样)

我在xib中创建了4个元素,并将它们与.h:

相关联
   IBOutlet UIButton *buttonTab1;
    IBOutlet UIButton *buttonTab2;
    IBOutlet UIButton *buttonTab3;

    IBOutlet UITextView *thisDescription;

    - (IBAction)showTab1:(id)sender;
    - (IBAction)showTab2:(id)sender;
    - (IBAction)showTab3:(id)sender;

@property (strong, nonatomic) IBOutlet UIButton *buttonTab1;
@property (strong, nonatomic) IBOutlet UIButton *buttonTab2;
@property (strong, nonatomic) IBOutlet UIButton *buttonTab3;
<。>在.m我尝试更改4个元素(这里是按钮1的代码):

@synthesize buttonTab1, buttonTab2, buttonTab3;

- (IBAction)showTab1:(id)sender{
        thisDescription.text = [NSString stringWithFormat:@"INHALT TAB 1: %@",transferDescription];
        buttonTab1.imageView.image = [UIImage imageNamed:@"content_tab1_on.png"];
        buttonTab2.imageView.image = [UIImage imageNamed:@"content_tab2.png"];
        buttonTab3.imageView.image = [UIImage imageNamed:@"content_tab3.png"];
        buttonTab1.titleLabel.text = @"Tab1on";
        buttonTab2.titleLabel.text = @"Tab2";
        buttonTab3.titleLabel.text = @"Tab3";
    }

TextViewElement的Text更改正常,但Title&amp;背景与xib中的相同。

2 个答案:

答案 0 :(得分:1)

要在按钮上设置背景图片和标题,您应该使用setTitle:forState:方法和setBackgroundImage:forState:方法。 由于按钮可能具有不同的标题或背景,具体取决于状态,因此直接设置图像或标签将无效。

这可以让您了解如何在代码中实现它:

[buttonTab1 setBackgroundImage:[UIImage imageNamed:@"content_tab1_on.png"] forState:UIControlStateNormal];
[buttonTab2 setBackgroundImage:[UIImage imageNamed:@"content_tab2.png"] forState:UIControlStateNormal];
[buttonTab3 setBackgroundImage:[UIImage imageNamed:@"content_tab3.png"] forState:UIControlStateNormal];
[buttonTab1 setTitle:@"Tab1on" forState:UIControlStateNormal];
[buttonTab2 setTitle:@"Tab2" forState:UIControlStateNormal];
[buttonTab3 setTitle:@"Tab3" forState:UIControlStateNormal];

答案 1 :(得分:0)

重点是您不要更改代码中的背景图像。你要做的是设置UIButton对象的(前景)图像。最终将得到IB中定义的背景图像,以编程方式设置的文本和以编程方式设置的图像。

原则上,这应该有效,你甚至不会注意到你的错误,但在UIButton上,你无法同时设置图像和文本。 Button有其中任何一个但不是两个 - 或者至少它不能同时显示两者。

解决方案:设置背景图像而不是图像。