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

我尝试改变3个button(TitleLable + Background)的外观和一个TextView的文本,在3个button中的一个button上单击。 (类似标签的内容)

我已经在xib中创build了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; 

.mi尝试更改4个元素(这里是button1的代码):

 @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的文本正常变化,但标题和背景是一样的在xib中。

要在button上设置背景图像和标题,您应该使用setTitle:forState:方法和setBackgroundImage:forState:方法。 由于button的状态可能会有不同的标题或背景,因此直接设置图像或标签将不起作用。

这应该给你一些关于如何在你的代码中实现这个想法:

 [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]; 

重点是你不要在你的代码中改变背景图片。 你所做的是设置UIButton对象的(前景)图像。 您将以IB中定义的背景图像,以编程方式设置的文本以及以编程方式设置的图像。

原则上,这应该工作,你甚至不会注意到你的错误,但在UIButton你不能同时设置图像和文本。 一个button有其中之一,但不能同时使用 – 或者至less它不能同时显示。

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