2012-05-04 3 views
0

UIPopoverController에 UISwitch가 있고 popover VC를 열면 기본 설정은 ON입니다. 나는 당신이 그것을 "OFF"로 설정하고 UIPopover를 닫을 때 그것을 갖기 위해 노력하고있다. popover를 다시 열면 UISwitch의 상태는 그대로 유지된다. 내 인생에서 나는 이것을 이해할 수 없으며, 정말 간단하다고 생각합니다. 나는 누군가가 나를 올바른 방향으로 인도 할 수 있을지 궁금해하고 있었다. 어떤 도움이라도 정말로 감사 할 것입니다! 이 상호 작용 년대 UISwitch에 호출UISopitch를 닫을 때 UISwitch가 OFF 상태를 유지하지 않습니다.

//--NEW CODE--// 
#define SWITCH_KEY_STATE @"Save UISwitch State" 

- (IBAction)settingsPopover:(id)sender { 
    if(![pop isPopoverVisible]){ 
     settings = [[settingsView alloc] initWithNibName:@"settingsView" bundle:nil]; 
     settings.setDelegate = self; 
     pop = [[UIPopoverController alloc] initWithContentViewController:settings]; 
     [pop setPopoverContentSize:CGSizeMake(200, 100)]; 
     [pop presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
     //--NEW CODE--// 
     popoverState = [NSUserDefaults standardUserDefaults]; 
     self.settings.hintSwitch.on = [popoverState boolForKey:SWITCH_KEY_STATE]; 

     [self.settings.hintSwitch addTarget:self action:@selector(onOff:) forControlEvents:UIControlEventValueChanged]; 
    } else { 
     [pop dismissPopoverAnimated:YES]; 
    } 
} 

이는 팝 오버 [self.settings.hintSwitch...를 만들 수있는 기능입니다가 팝 오버 (설정)입니다 :

[편집]

내가 함께 일하고 있어요 코드입니다 그것은이 무효 기능을 실행하여 :

- (void)onOff:(id)sender { 
    if (settings.hintSwitch.on) { 
     tutView.hidden = NO; 
    } else { 
     tutView.hidden = YES; 
    //--NEW CODE--// 
    popoverState = [NSUserDefaults standardUserDefaults]; 
    [popoverState setBool:self.settings.hintSwitch.on forKey:SWITCH_KEY_STATE]; 
     } 
    } 

그래서는 UISwitch를 "ON"으로 재설정, 나는 팝 오버를 닫고 다시 열 때 그냥 찾아 작동 할 수.

[EDIT2] 위 코드는 내가 추가 한 코드를 편집했습니다. 당신이 다시 ALLOC 당신이 컨트롤러마다 그와

pop = [[UIPopoverController alloc] initWithContentViewController:settings]; 

(ON 기본에) 초기 설정으로 초기화 :

+0

대답은 쉽습니다. popover를 닫을 때 상태를 저장하고 다시 열 때 수정할 수 있습니다. 하지만 코드에 따라 답변을 다르기 때문에 코드를 게시해야합니다. –

+0

감사합니다. 코드를 포함하도록 첫 번째 게시물을 편집했습니다. – Ollie177

답변

1

내가 보는 제일 먼저 코드 줄 것입니다.

  1. 당신이 그것을 초기화하기 일단 당신이 사용할 수있는 popovercontroller 기각하기 전에 "popoverState"
  2. 당신의 UISwitch의 상태를 저장처럼라는 클래스의 BOOL을 만듭니다

    이 솔루션을 스위치의 상태를 설정하는 새로운 변수

놔줘!

+0

멋진 감사, 나는 그것을 시도하고 알려 드리겠습니다! – Ollie177

+0

알았어. 네가 도와줬으면 좋겠어. 당신이 말한대로 가서 NSUserDefaults를 살펴 보았습니다. 그래서 새로운 코드를 게시 할 것입니다. 그게 효과가있어, 당신이 잘못 알고 있다면 나에게 알려줘. 그렇지 않으면 네가 준 솔루션에 대해 정말 도움이된다. – Ollie177

관련 문제