1

ルートビューコントローラーとモーダルビューコントローラーを備えた非常にシンプルなアプリがあります。

最初のビューでは、UIButtonは1つしかありません。これは、モーダルコントローラーへの遷移をアニメーション化します。モーダルビューコントローラーには、4つのスライダー(R、G、B、Alpha)があり、モーダルビューの背景色と1つの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 に答える