从另一个控制器更改控制器背景

时间:2015-03-20 11:16:19

标签: ios objective-c iphone ipad

我有3个控制器" Home" " LeftNavigation" "简介"

左侧导航通过" Revealviewcontroller"处理lib

Home Controller具有背景图像

- (void)viewDidLoad {
   [self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"bg_forest.png"]]];
}

使用LeftNavigation I segue进入模态控制器" Profile" 。在Profile Controller里面有一个IBAction按钮,我需要触发它来改变" Home"控制器

1 个答案:

答案 0 :(得分:1)

有几件事:

您不应尝试直接更改其他视图控制器的视图。而是将属性添加到主视图控制器以获取背景颜色。

您需要一些方法让配置文件视图控制器获取指向主视图控制器的指针。如果您的主视图控制器始终存在,并且创建了唯一的主视图控制器实例,则可以使其成为单例(在Objective-C Singleton模式上搜索)。

然后在您的主视图控制器的viewWillAppear方法中,使用background color属性设置内容视图的背景颜色。这样,如果配置文件视图控制器更改它,主视图控制器会在它显示之前更新其背景颜色。

正如Zsolt勋爵所说,你也可以使用通知或委托(再次,搜索NSNotificationManager和Objective-C委托设计模式来了解这些。)为了使委托模式有效,你需要设置主视图控制器作为配置文件视图控制器的代理。

如果您使用通知,则需要一种方法将所需的颜色传递给主视图控制器。对于您可以使用的通知,有一个userInfo参数。