在iOS 8中无法更改UIView背景颜色和UILabel文本颜色

时间:2014-11-30 18:33:58

标签: ios objective-c iphone uiview uilabel

我看过很多帖子,似乎没有人帮我解决当前遇到的问题。我试图通过按钮单击以编程方式更改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

此外,正在修改背景颜色,但未在模拟器的屏幕上更新。

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存在。(并且答案不是空的。 好吧,这是一个起点,测试这个评论以获得更多帮助。