1

我有一个超级简单的应用程序,带有根视图控制器和模态视图控制器。

乍一看,我只有一个 UIButton - 它动画过渡到模态控制器。在模态视图控制器中,我有 4 个滑块(R、G、B、Alpha),它们正在更改模态视图背景颜色和一个 UIBUtton 以退出模态视图。通过单击此按钮,我的根控制器的背景颜色需要更改为与模态控制器中相同的颜色。我怎样才能做到这一点并使我的模态控制器采取行动来实现这一目标?

我还需要将此首选项保存到 NSUserDefaults。那么最正确的方法是什么?

4

2 回答 2

2

您好这里是您可以使用 NSUserDefaults 执行的一些操作的快速参考。您可以使用它来保存 NSUserDefault 中的数据

保存

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// saving an NSString
[prefs setObject:@"TextToSave" forKey:@"keyToLookupString"];

// saving an NSInteger
[prefs setInteger:42 forKey:@"integerKey"];

// saving a Double
[prefs setDouble:3.1415 forKey:@"doubleKey"];

// saving a Float
[prefs setFloat:1.2345678 forKey:@"floatKey"];

// This is suggested to synch prefs, but is not needed (I didn't put it in my tut)
[prefs synchronize];

检索

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// getting an NSString
NSString *myString = [prefs stringForKey:@"keyToLookupString"];

// getting an NSInteger
NSInteger myInt = [prefs integerForKey:@"integerKey"];

// getting an Float
float myFloat = [prefs floatForKey:@"floatKey"];

您可以使用 CGFloat red = [myColor red]; 等实用程序获取 RGB 值。和 CGFloat Green= [myColor Green]; 明智地用它来拯救他们。

或者您可以检查从 UIColor 预设中获取 RGB 值以获得相同的

于 2012-07-17T12:36:31.930 回答
1

阅读委托模式来做你的第一件事;我已经发布了我在下面写的一个小教程。另一个答案看起来应该足够了NSUserDefaults

Delegates

//In parent .m file:
//assign the delegate
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([segue.identifier isEqualToString:@"segueName"])
    {
        childController *foo = segue.destinationViewController;
        foo.delegate = self;
    }

}

//implement protocol method(s):
- (void) methodName:(dataType*) dataName
{
    //An example of what you could do if your data was an NSDate
    buttonLabel.titleLabel.text = [[date description] substringToIndex:10];
}

//In parent .h file:
//import child header
#import "ChildName.h"

//indicate conformity with protocol
@interface ParentName : UIViewController <ChildNameDelegate>

//In child .h file
//declare protocol
@protocol ChildNameDelegate
- (void) methodName:(dataType*) dataName;
@end

//declare delegate
@property (unsafe_unretained, nonatomic) id<ChildNameDelegate> delegate;


//In child .m file
//synthesize delegate
@synthesize delegate; 

//use method
- (IBAction)actionName:(id)sender 
{
    [delegate methodName:assignedData];
}

这是另一个简单的委托示例?

于 2012-07-17T12:37:11.607 回答