2011-09-13 3 views
0

내 응용 프로그램에는 일련의 텍스트 필드, 확인란 및 기타 컨트롤이 있습니다. 이상적으로 나는 (또는 모든) 컨트롤을 변경했을 때 정보를 저장하도록 사용자에게 요청할 것입니다.데이터 응용 프로그램의 변경 사항 확인

이 방법이 있습니까 이 변경되면 동작 응용 프로그램이 다양합니까? 또는 컨트롤 당 액션을 만들고 거기에 코드를 설정해야합니까?

Xcode 4가 어떤 차이점이 있다면 사용하고 있습니다.

도움 주셔서 감사합니다.

+0

하나 이상의 컨트롤이 하나의 동작을 가리킬 수 있으면 보낸 사람의 태그 또는 인덱스를 기반으로 구분할 수 있습니다. –

답변

2

어쨌든 (사용자 변경을 처리하기 위해) 컨트롤마다 코드를 작성해야합니다.

앱 설정 방식에 따라 변경 가능한 속성마다 추가 코드를 작성해야 할 수도 있습니다.

NSNotificationCenter를 사용하고 데이터 속성 중 하나가 변경되면 "변경된"알림을 보내는 것이 좋습니다. 당신의 통제가 일부 데이터 스토리지 개체의 속성을 설정 터치

: 데이터 스토리지 클래스 속성 정의하는 것이다

-(IBAction)grommetSwitchPress:(UISwitch*)sender 
{ 
    self.userData.wantsGrommets = sender.on; 
} 

: 사용자 정의 속성 setter와

@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]; 
    } 
} 

일부 헤더에서는 notifi somethingChanged에서

- (void)viewDidLoad:(BOOL)animated 
{ 
    [[NSNotificationCenter defaultCenter] addObserver:self 
       selector:@selector(somethingChanged:) 
      name:NOTIFY_SOMETHING_CHANGED 
      object:nil]; 
} 

: : 방법, 당신은 데이터를 저장할 수있는 양이온 메시지 : NOTIFY_SOMETHING_CHANGED를 수신하여 응용 프로그램의 코드, 예를 넣을 위치를

#define NOTIFY_SOMETHING_CHANGED  @"somethingChanged" 

그것은 당신까지 결정하기 예를 들어, NSUserDefaults.

"컨트롤의 일부 또는 전부에서 무언가가 변경되면 정보를 저장하도록 사용자에게 요청하는 것"을 권장하지 않습니다. 사용자가 자신의 변경 사항을 저장할지 묻는 것은 귀찮은 일입니다. 물론 그렇습니다. 그들에게 기회를 제공하고 싶다면 대신 "되돌리기"또는 "재설정"버튼을 제공하십시오.

+0

굉장합니다. 그것을 시도하자 그리고 다시 너에게 rigth을 얻을거야. –

+0

좋은 답변입니다. 아주 자세하게. –

+0

그래야합니다. 고마워요 @ ZeroDiv –

관련 문제