点击后更改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:设置背景图像而不是图像。