1

我需要同时更改我的应用程序中所有 UIviewcontrollers 的背景颜色,就像选择蓝色一样,让所有蓝色和绿色都做同样的事情。

4

4 回答 4

5

一种方法是在颜色更改后触发通知,并将所有视图控制器作为侦听器。然后您可以更改为该通知调用的选择器中的颜色...

(如果你想避免一次又一次地编写整个过程,你可以创建一个基视图控制器子类化 UIViewController 并且所有视图控制器都将子类化这个基视图控制器......这样做你只需要在基视图控制器中定义一次listner函数) .. 希望这会有所帮助... :)

于 2012-04-04T19:34:01.550 回答
3

大多数应用程序的视图控制器一次只能看到一个。如果你的应用是这样,那么你的 VC 可以在它们出现之前设置它们的视图背景颜色。

- (void)viewWillAppear:(BOOL)animated {

    if (/* the condition that makes me supposed to have a blue background */) {

        // I was supposed to be blue already, but nobody can see me yet,
        // so everything is cool

        self.view.backgroundColor = [UIColor blueColor];
    }
}
于 2012-04-04T19:48:29.367 回答
2

完成此任务的最佳方法是将您的通用美学和视图逻辑重构为基类。例如,在我的大多数项目中,我都有一个名为 BaseViewController 的类。所有 UIViewControllers 都从这个基类扩展而来。在viewDidAppearviewDidLoad方法中,我为我的应用程序中的每个视图完成了适当的设置。然后,当您(不可避免地)想要更改应用程序的外观时,代码只在一个地方!

于 2012-04-04T21:04:09.740 回答
2

您不能设置backgroundColorfor UIViewController,只能设置它的view属性。好吧,您可以将此UIColor值设置为全局值,并在设置它时发布和观察者事件,这些事件将到达每个方法中UIViewController以将其设置self.view.backgroundColor为指定的颜色。

于 2012-04-04T19:09:44.303 回答