2014-03-04 5 views
0

사용자가 설정 VC에 들어가서 설정을 수정 한 후에 설정보기 컨트롤러에 대해 Segue 및 해당 설정을 가지고 있습니다. 어떻게 이러한 설정을 얻을 수 있습니까? 메인 뷰 컨트롤러. '다른 방법'이 가능합니까? 당신은 위임 프로토콜을 사용해야합니다설정 View Controller from Main View 컨트롤러 정보 전송

+3

특히이 경우 (설정) 특히 컨트롤러간에 전달하는 대신 데이터를 NSUserDefaults에 유지하는 것이 더 적절할 수 있습니다. – Alladinian

답변

0

여기에 몇 가지 옵션이 있습니다. 기본적으로 설정보기 컨트롤러에서 기본보기 컨트롤러로 데이터를 전달하는 전략이 필요합니다. 나는 실행 된 segue로부터 독립적으로 그것을하는 것을 선호 할 것이다. 수 있습니다 :

  1. NSUserDefaults를 사용하여 이미 선택한 설정을 유지합니다. Class Reference.
  2. 위임 기법을 사용하여 앱의 다른 개체에 결과를 전달하십시오.
  3. 알림을 사용하면 이벤트/변경 사항을 앱의 객체 세트로 전파 할 수 있습니다.
  4. 사용자 기본값에 저장하기에는 너무 복잡하면 변경 사항을 유지하려면 고유 한 모델을 사용하십시오.
0

블록을 사용해 볼 수도 있습니다. 지금처럼 settingsViewController에 속성을 넣어 : 다음

@property (nonatomic, strong) void(^completionBlock)(NSDictionary *dataYouWantPassedBack); 

당신의 MainViewController에, -prepareForSegue 당신이

설정에서
-(void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"mySegueName"]) 
    { 
     SettingsViewController *dest = [segue destinationViewController]; 
     dest.completionBlock = ^(NSDictionary *dataYouWantPassedBack){ 

      //do anything you want with the data in the dictionary here 
     }; 
    } 
} 

이 컨트롤러를 볼 당신의 settingsViewController을 기각 할 때 데이터에 일이 원하는 설정에 전달 된 사전에 데이터를 넣은 다음 완료 블록을 호출하고 사전을 전달하여보기 컨트롤러를 닫을 수 있습니다.

NSDictionary *example = [NSDictionary dictionaryWithObjectsAndKeys: obj, key, nil]; 

if (self.completionBlock) 
    self.completionBlock(example); 
관련 문제