所以,我有一个带有两个按钮的HomeViewController(图1),一个是白色,一个是蓝色。在右下角,您可以看到一个按钮,该按钮以模态方式呈现SettingsViewController(图片2),在此视图控制器上有4个按钮,因此用户可以选择他们喜欢的颜色方案。想象一下,用户按下第一个(红色)然后,当解除视图控制器时,HomeViewController的颜色方案应该如图3所示。
有关如何以高效/简单的方式执行此操作的任何想法?
答案 0 :(得分:1)
有两种很好的方法可以做到这一点:1)授权,2)viewWillAppear:
。
对于委派,您需要定义协议。对于此协议,您的HomeViewController
将为delegate
,您的SettingsViewController
会将其称为。{/ p>
//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];
}
答案 1 :(得分:0)
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;
}