2013-12-05 4 views
-1

EDIT : 여전히 답이 필요합니다!UIViewController가 해제 된 후 각 UISwitch 상태를 저장하고 복원하는 방법

내가 2 UIViewControllers을 가지고있다 (의 그들 ParentVCSecondVC를 부르 자).

SecondVC에는 11 개의 UISwitch 요소가 있고 SecondVC에서 ParentVC 로의 각 UISwitch에 대한 상태를 보내려면 1 개의 버튼이 있습니다.

parentVC에는 NSDictionary의 키가 포함될 NSArray가 필요합니다 (IBAction에 설명되어 있음). 나는 IBAction를 가지고 :

NSDictionary *resultDic = [NSDictionary dictionaryWithObjectsAndKeys: 
           [NSNumber numberWithBool: [_cafeSwitch isOn]], @"Cafe", 
           ..... 
           [NSNumber numberWithBool: [_bowlingSwitch isOn]], @"BowlingClub", 
           nil]; 
    NSMutableArray *resultArray = [[NSMutableArray alloc] init]; 
    for (NSString *key in resultDic) { 
     NSNumber *value = [resultDic valueForKey:key]; 
     if ([value compare:[NSNumber numberWithInt:1]] == NSOrderedSame) 
      [resultArray addObject:key]; 
    } 
    [_delegate sendSelectedPlaceTypeArray:[NSArray arrayWithArray:resultArray]]; 
    [self dismissViewControllerAnimated:YES completion:^{}]; 

방법 sendSelectedPlaceTypeArray은 ParentVC이있는 NSArray를받을 수있는 위임 방법이다. 모든 스위처는 기본 상태로 선택됩니다. 기본적으로

- (void)sendSelectedPlaceTypeArray:(NSArray *)placeTypeArray { 
    filteredPlaceTypeArray_ = placeTypeArray; 
} 

이 filteredPlaceTypeArray_ 모두 11 개 곳의 유형을 포함 ParentVC에서 은 내가 대리자 메서드의 구현을 가지고있다. SecondVC를 제공

filteredPlaceTypeArray_ = [NSArray arrayWithObjects:@"Cafe", ... ,@"BowlingClub", nil]; 

방법은 다음과 같습니다

  1. 필터와 함께 작동하도록 좋은 솔루션입니다 :

    - (IBAction)showPlaceTypeFilter:(id)sender { 
        UIStoryboard *iPhoneStoryboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil]; 
        PlaceTypeFilterViewController *destViewController = [iPhoneStoryboard instantiateViewControllerWithIdentifier:@"PlaceTypeFilterViewController"]; 
        destViewController.delegate = self; 
        destViewController.currentFilteredPlaceTypesArray = filteredPlaceTypeArray_; 
        [self presentViewController:destViewController animated:YES completion:nil]; 
    } 
    

    나는 질문의 번호를 가지고있다?

  2. SecondVC가 두 번 이상 호출되고 UISwitch 요소 11 개 중 2 개가 변경된 경우 UISwitch 요소 값을 저장하고 복원하는 방법은 무엇입니까? 이것에 가장 적합한 솔루션은 무엇입니까? SecondVC가 나타나면 모든 UISwitch 요소가 선택 되었기 때문입니다.

제 질문은 정확합니다. 감사합니다. Artem.

for (UISwitch *mySwitch in [self.view subviews]) { 
    if ([mySwitch isKindOfClass:[UISwitch class]]) { 
     NSLog(@"State == %@",[mySwitch description]); 
     //Do what ever you want to do with your switches 
    } 
} 

편집 : 내가 당신에게서 understod으로

답변

-1

, 여기에보기에서 모든 개체를 얻을 수있는 방법이 편집되기 전에이 대답은 원래의 질문에 관련이 있습니다.

는 프로그래밍 방식으로

+0

내 USSwitch의 각 요소에 대한 올바른 상태를 가지고 각 UISWitch에 대한 상태를 설정합니다. 문제는 SecondVC가 두 번 이상 호출되고 11 개의 UISwitch 요소 중 2 개가 변경된 경우이 값을 저장하고 복원하는 방법입니다. –

+0

그러면 질문이 잘못되었습니다 !! 질문 헤더를 읽으십시오 !! – Mutawe

+0

헤더가 수정되었습니다. 감사합니다. –

관련 문제