我尝试在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中的相同。
答案 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有其中任何一个但不是两个 - 或者至少它不能同时显示两者。
解决方案:设置背景图像而不是图像。