我正在编写一个应用程序,其中显示了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 ...
答案 0 :(得分:0)
您的代码似乎对我而言,但我认为您在声明“fotoMode”时遇到问题。
确保在Appdelegate.h文件下定义BOOL
@property(nonatomic,assign)BOOL fotoMode;
如果您没有声明您的BOOL,那么您将无法设置并获得正确的值。
希望有帮助...
答案 1 :(得分:0)
当部分卷曲关闭时,不会调用ViewWill / DidAppear(因为旧视图从未完全消失)。关闭设置页面时,使用委派来调用。