使用具有部分卷曲的模态segue更改MKMapType

时间:2012-10-05 15:51:42

标签: ios mkmapview modalviewcontroller uistoryboardsegue

我正在编写一个应用程序,其中显示了mapview。现在我想让用户选择将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 ...

2 个答案:

答案 0 :(得分:0)

您的代码似乎对我而言,但我认为您在声明“fotoMode”时遇到问题。

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

@property(nonatomic,assign)BOOL fotoMode;

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

希望有帮助...

答案 1 :(得分:0)

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