如何从另一个ViewController更改背景颜色?

时间:2014-03-16 00:47:30

标签: ios objective-c background-color

我有两个视图控制器,Home和另一个由cocoacontrol动画(MJPopupViewController)显示,并且idn显示当你按下按钮所有背景更改时,但我不知道如何更改家查看控制器的背景,因为它们不在导航中,所以我不能使用self.parentViewController转换,所以我该怎么做?下面是代码:

- (IBAction)purple:(id)sender {
    self.view.backgroundColor = [UIColor MyPurple];

    HomeViewController *home = (HomeViewController *) self.parentViewController; <-- this didnt work, I also tried only self....

    home.view.backgroundColor = [UIColor purpleColor];


}

所以我需要你的帮助,我开始,所以我希望你理解,谢谢!

2 个答案:

答案 0 :(得分:1)

也许试试:

HomeViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter]
     addObserver:self
     selector:@selector(changeColor)
     name:@"changeColor" object:nil];
}

- (void)changeColor
{
    self.view.backgroundColor = [UIColor purpleColor];
}

- (void)dealloc
{
    [[NSNotificationCenter defaultCenter]removeObserver:self];
}

PopUpViewController

- (IBAction)purple:(id)sender
{
    [[NSNotificationCenter defaultCenter]postNotificationName:@"changeColor" object:nil];
}

答案 1 :(得分:0)

我建议您更改“视图”的背景颜色。你需要在它上面设置backgroundColor属性。这意味着您可以访问它。如果它只在一个控制器中,你只需使用

self.view.backgroundColor = [UIColor redColor];

如果它位于导航或类似的应用程序中,那么您可以访问视图parentViewController并更改其上的颜色,如下所示:

self.parentViewController.view.backgroundColor = [UIColor redColor];

如果无法做到这一点,那么你可以在创建第二个视图控制器时在第二个视图控制器上设置一个iVar,它包含你要更改背景颜色的viewController实例。

MyViewController* secondViewController = [[MyViewController alloc] init];
secondViewController.bgColorNeedsChangingViewController = self;

然后在secondViewController的逻辑

self.bgColorNeedsChangingViewController.view.backgroundColor = [UIColor redColor];