철저한 조사를 수행했지만 답변을 찾지 못한 것 같습니다. 누군가가 도울 수 있기를 바랍니다.Xcode 여러 viewcontroller에서 NSUserDefaults를로드하십시오
내 앱에 여러 개의보기 컨트롤러가 있으며 그 중 하나는 사용자가 세그먼트 컨트롤을 통해 배경색과 같은 특정 설정을 변경할 수있는 '옵션'보기입니다. 클릭하면 사용자가 버튼을 클릭하여 기본 설정 색상을 NSUserDefaults에 저장합니다. 이것은 완벽하게 작동하고 다음에 앱이 열리면 올바른 색상이 선택됩니다. 그러나 옵션보기 컨트롤러에서만.
다른보기 컨트롤러에서이 선택한 배경색을로드하려면 어떻게해야합니까? 옵션보기 (아래 참조)에서했던 것처럼 다른 뷰의 ViewDidLoad에 구현하여 실행하는 것 같지 않습니다.
- (IBAction)changeColor {
switch (colorControl.selectedSegmentIndex) {
case 0:
[colorView setBackgroundColor:[UIColor redColor]];
break;
case 1:
[colorView setBackgroundColor:[UIColor blackColor]];
break;
case 2:
[colorView setBackgroundColor:[UIColor brownColor]];
break;
default:
break;
}
}
- (IBAction)saveDefaultColor {
int defaultColorInteger = colorControl.selectedSegmentIndex;
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setInteger:defaultColorInteger forKey:@"defaultColor"];
[userDefaults synchronize];
}
위
가 제어하고 저장 버튼입니다 다음과 같이 options.m에서내 코드입니다. 내 viewDidLoad에 나는 다음과 같은 포함 시켰습니다 : I가 원하는대로
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
int defaultColorInteger = [userDefaults integerForKey:@"defaultColor"];
[colorControl setSelectedSegmentIndex:defaultColorInteger];
switch (colorControl.selectedSegmentIndex) {
case 0:
[colorView setBackgroundColor:[UIColor redColor]];
break;
case 1:
[colorView setBackgroundColor:[UIColor blackColor]];
break;
case 2:
[colorView setBackgroundColor:[UIColor brownColor]];
break;
default:
break;
이 정확히 작동하지만 난 내 다른 뷰에서 작업을 얻을 수 없습니다. 누락 된 것으로 보이는 사람이 누구도 도울 수 있습니까? 많은 감사
은 다른보기에서 코드가 정확히 동일합니까? 특히 키 이름 –
먼저 NSLog를 사용하여 int 값을 확인하십시오. 두 번째, 그것을 실행하려고 @ viewWillApear 또는 viewDidLayoutSubviews –
다음을 추가했습니다 : NSLog (@ "default Color : % i", defaultColorInteger); 실제로이 값은 기본 색상 인 2와 같이 올바른 값을 반환합니다 (예 :). 첫 번째 뷰에서 두 번째 뷰로의 정확한 선을 복사 했으므로 오타가 만들어지지 않았지만 viewWillAppear 메서드를 사용할 때도 여전히 작동하지 않습니다. 이 방법을 구현할 수있는 방법을 보여줄 수 있습니까? 감사합니다 – Harold