0

我正在编写一个显示地图视图的应用程序。现在我想为用户提供将 MKMapType 从标准更改为混合的选项。

为了做到这一点,我创建了一个到另一个视图控制器的 segue,其中包含一个用于设置 Map Type 的开关。过渡是模态的,使用部分卷曲。为了访问开关的值,我在 AppDelegate 中引入了一个称为 fotoMode 的 BOOL。如果此变量设置为 YES(并且如果开关设置为 ON),那么我想重新绘制地图。

- (IBAction) FotoModusSwitchChanged:(UISwitch *)sender 
{
 AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];    
if(sender.isOn)
 {
    appDelegate.fotoMode=YES;
 }
 else 
 {
    appDelegate.fotoMode=NO;
 }
}

我在地图视图的视图控制器的 VieWillAppear、ViewDidAppear、ViewDidLoad、ViewWillLayoutSubviews 中包含了以下代码行,但它不起作用:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];    
if (appDelegate.fotoMode) {
    [self.MapOutlet setMapType:MKMapTypeHybrid];
}
else
{
    [self.MapOutlet setMapType:MKMapTypeStandard];
}

知道我做错了什么吗?谢谢。

PS:手动将 MKMapType 设置为 Hybrid 或 Standard 工作...

4

2 回答 2

0

您的代码对我来说似乎是正确的,但我认为您在声明“fotoMode”时遇到了问题。

确保在您的 Appdelegate.h 文件下定义您的 BOOL

@property(nonatomic,assign) BOOL fotoMode;

如果您没有正确声明您的 BOOL,那么您将无法设置并获得正确的值。

希望有帮助...

于 2012-10-05T18:59:03.260 回答
0

关闭部分卷曲时不会调用 ViewWill/DidAppear(因为旧视图从未完全消失)。关闭设置页面时使用委托调用。

于 2014-05-23T06:46:10.190 回答