我看过很多帖子,似乎没有人帮我解决当前遇到的问题。我试图通过按钮单击以编程方式更改UIView背景颜色和UILabel文本颜色。它们都在界面构建器中连接。我所做的是打开Main.storyboard旁边的ViewController.h文件,然后单击并拖动以连接视图(backgroundView)和标签(letterR)。
如果有人能够看到我做错了什么,那将非常感谢!
ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController{
IBOutlet UIView *backgroundView;
IBOutlet UILabel *letterR;
}
@end
ViewController.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
static int flag = 0;
- (void)viewDidLoad {
[super viewDidLoad];
}
- (IBAction)ButtonClick:(id)sender {
if(flag == 0){
flag = 1;
letterR.textColor = [UIColor blackColor];
backgroundView.backgroundColor = [UIColor whiteColor];
}
else if(flag == 1){
flag = 0;
letterR.textColor = [UIColor whiteColor];
backgroundView.backgroundColor = [UIColor colorWithRed:0 green:1 blue:1 alpha:1];
}
}
@end
当监控标签和背景的NSLog输出时,这就是我得到的:
字母R: 2014-11-26 15:18:18.358 Rave [3923:340203]字母R:&gt;
打印字母的颜色:( null)
背景 2014-11-26 15:18:18.358 Rave [3923:340203]背景:&gt;
打印背景颜色:2014-11-26 15:23:13.467 Rave [3962:342332]背景颜色:UIDeviceRGBColorSpace 0 1 1 1
此外,正在修改背景颜色,但未在模拟器的屏幕上更新。
答案 0 :(得分:0)
有几件事情可能是错的。你需要检查几件事,首先是storyboard(或Xib)和你的viewController之间的连接是好的。 它通过代码与背景视图建立连接是一件好事。 (如果你要在视图中添加另一个视图以便将其删除,那么如果你只是一个视图中的故事就可以了。)
在您的代码中尝试此操作:
- (IBAction)ButtonClick:(id)sender {
if(flag == 0){
flag = 1;
letterR.textColor = [UIColor blackColor];
self.view.backgroundColor = [UIColor whiteColor];
NSLog(@"With flag=0, this is firing, The UILable is:%@",[letteR description]);
}
else if(flag == 1){
flag = 0;
letterR.textColor = [UIColor whiteColor];
self.view.backgroundColor = [UIColor colorWithRed:0 green:1 blue:1 alpha:1];
NSLog(@"With flag=1, this is firing, The UILable is:%@",[letteR description]);
}
}
你需要看到比UILabel存在。(并且答案不是空的。 好吧,这是一个起点,测试这个评论以获得更多帮助。