NSUserDefaultsに標準/サテライト/ハイブリッドマップを保存する3つのオプションを持つセグメント化されたコントロールがあります。私が抱えている問題の1つは、mapSettingsViewControllerが再訪問されるたびに、セグメント化されたコントロールが最初のセグメントに戻ることです。もう一つの問題は、mapViewControllerがviewWillAppearにリロードしないことです。UISegmentedControlを使用してNSUserDefaultsでmapKitの設定を保存する - 正しく動作しない
StoryboardingでpageCurlモーダルトランジションを使用しています。問題があるかどうかはわかりません。
この設定のコードセグメント化された選択保存するコントローラ(mapSettingsViewController)を表示である:セグメントが選択されたマップベースへの変更を表示するために最初のビューコントローラ(mapViewController)で、次いで
- (IBAction)changeMapType: (id)sender{
NSInteger index = ((UISegmentedControl*)sender).selectedSegmentIndex;
// Get the shared defaults object.
NSUserDefaults *mapUserPreferences = [NSUserDefaults standardUserDefaults];
if(segmentedControlMapType.selectedSegmentIndex == 0){
// Save the index.
[mapUserPreferences setInteger:index forKey:@"mapViewKey"];
}
else if(segmentedControlMapType.selectedSegmentIndex == 1){
// Save the index.
[mapUserPreferences setInteger:index forKey:@"mapViewKey"];
}
else if(segmentedControlMapType.selectedSegmentIndex == 2){
// Save the index.
[mapUserPreferences setInteger:index forKey:@"mapViewKey"];
}
// Write them to disk
[mapUserPreferences synchronize];
}
をユーザーによって。 viewWillAppearにコードを挿入したので、毎回ビューが表示されるときにマップが再ロードされます。任意の助け
-(void) viewWillAppear:(BOOL)animated {
// Get the settings and set the selected index.
NSUserDefaults *mapUserPreferences = [NSUserDefaults standardUserDefaults];
if([mapUserPreferences integerForKey:@"mapViewKey"] == 0) {
mapView.mapType = MKMapTypeStandard;
}
if([mapUserPreferences integerForKey:@"mapViewKey"] == 1) {
mapView.mapType = MKMapTypeSatellite;
}
if([mapUserPreferences integerForKey:@"mapViewKey"] == 2) {
mapView.mapType = MKMapTypeHybrid;
}
}
感謝:)
IBでセグメント化されていないコントロールを選択解除して変更しました。 mapViewControllerのviewWillAppearにマップはまだロードされません。ビューを離れて戻ってからロードする必要があります。私は、ページのカールの移行は、マップをリロードしないviewWillAppearと関係があるかどうか疑問に思っています... – hanumanDev