更改所有应用程序配色方案

Change all the app color scheme

所以,我有一个带有两个按钮的 HomeViewController(图 1),一个白色,一个蓝色。在右下角,您可以看到一个按钮,它以模式方式呈现一个 SettingsViewController(图 2),在此视图控制器上有 4 个按钮,因此用户可以选择他们喜欢的配色方案。想象一下,用户按下第一个(红色)然后,当关闭视图控制器时,HomeViewController 的配色方案应该如图 3 所示。

关于如何以 efficiently/simple 方式执行此操作的任何想法?

In HomeViewController
On SettigButton Click
 {
   Pass the HomeViewController delegate object SettingsViewController 
   Present your color Picker SettingsViewController 

 }

In SettingsViewController
 Define protocol name SettingsViewControllerDelegate 
   {
    -(void)selectedColor:(UIColor*)color;
   }

  return the selected color On dismissViewController
  if(delegate)
    {
     [delegate selectedColor:color];
    }


Again In HomeViewController
 -(void)selectedColor:(UIColor*)color
{
  view.backgroundColor=color;

}

有两种好方法可以做到这一点:1) 委托,和 2) viewWillAppear:.

对于委派,您需要定义一个协议。您的 HomeViewController 将成为此协议的 delegate,您的 SettingsViewController 将调用它。

//SettingsViewController.h

@protocol SettingsDelegate <NSObject>
@required
-(void)colorChanged:(UIColor *)color;
@end

@interface SettingsViewController : UIViewController

@property (nonatomic, weak) id<SettingsDelegate> delegate;

@end

设置视图控制器时,确保将 self.delegate 设置为对 HomeViewController 的引用。 这是必须的。

然后,当您的用户更改颜色时,调用:

[self.delegate colorChanged:whateverColor];

您的代表显然必须遵守此方法,并适当更改颜色:

-(void)colorChanged:(UIColor *)color {

    [myButton setBackgroundColor:color];
}

对于viewWillAppear:,只需将颜色保存在某处并为此在视图控制器的方法中设置按钮的颜色。 viewWillAppear: 将在您的设置视图即将消失并显示主页视图控制器时被调用:

-(void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];

    [myButton setBackgroundColor:mySavedColor];
}