とにかく(ユーザーの変更を処理するために)コントロールごとにコードを記述する必要があります。
アプリの設定方法に応じて、変更可能なプロパティごとにコードを追加する必要があります。
NSNotificationCenterを使用し、データプロパティの1つが変更されたときに「何か変わった」通知を送信することをお勧めします。あなたのコントロールはあなたには、いくつかのデータ・ストレージ・オブジェクトのプロパティを設定するタッチする
:
-(IBAction)grommetSwitchPress:(UISwitch*)sender
{
self.userData.wantsGrommets = sender.on;
}
データ・ストレージ・クラスは、プロパティを定義すること:
@interface UserData : NSObject
{
}
@property (nonatomic, assign) BOOL wantsGrommets;
そのカスタムプロパティのセッターと値が変更されたかどうかをテストします:
-(void)setWantsGrommets:(BOOL)wantsThem
{
if (wantsGrommets != wantsThem) // compares current property value with incoming
{
wantsGrommets = wantsThem;
[[NSNotificationCenter defaultCenter]
postNotificationName:NOTIFY_SOMETHING_CHANGED
object:self];
}
}
一部のヘッダーでは、カチオンメッセージ:
#define NOTIFY_SOMETHING_CHANGED @"somethingChanged"
、それはどこNOTIFY_SOMETHING_CHANGEDをリッスンあなたのアプリ、例えばにコードを配置するかを決定するのはあなた次第です:
- (void)viewDidLoad:(BOOL)animated
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(somethingChanged:)
name:NOTIFY_SOMETHING_CHANGED
object:nil];
}
somethingChangedで:方法、あなたはにデータを保存することができNSUserDefaultsなどです。
「コントロールのいずれか(またはすべて)で何かが変更されたときに情報を保存するようにユーザーに依頼する」ことをお勧めします。ユーザーに自分の変更を保存してもらいたいかどうかを尋ねるのは面倒です...もちろんそうです。それらに戻す機会を与えたい場合は、代わりに「元に戻す」または「リセット」ボタンを用意してください。
複数のコントロールが1つのアクションをポイントできる場合、送信者のタグまたはインデックスに基づいて区別できます。 –