如何在部分卷曲中更改mapView mapType?

时间:2012-03-27 01:33:25

标签: objective-c xcode android-mapview uisegmentedcontrol page-curl

我正在尝试重新创建Google地图的功能,将地图类型更改为混合或卫星或标准。我已经设置了一个以部分卷曲过渡显示的视图。在此视图中,是一个UISegmentedControl。当它的值改变时,执行以下代码:

- (IBAction)setMap:(id)sender {
switch (((UISegmentedControl *) sender).selectedSegmentIndex) {
    case 0:
        [self curlViewControllerDidFinish:nil];
        [mapview setMapType:MKMapTypeStandard];
        break;

    case 1:
        [self curlViewControllerDidFinish:nil];
        [mapview setMapType:MKMapTypeSatellite];
        break;

    case 2:
        [self curlViewControllerDidFinish:nil];
        [mapview setMapType:MKMapTypeHybrid];
        break;

    }
}

卷曲过渡完成,但mapType不会更改。我已尝试将[mapview setmapType...置于[self curlViewControllerDidFinish...之上。

注意:如果在curl转换之外执行,[mapview setMapType:MKMapTypeHybrid];会使用1行代码更改mapType。

有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:2)

iOS Maps.app很可能使用委托来通知地图视图模态视图已选择新选项。像这样:

- (IBAction)setMap:(id)sender {
switch (((UISegmentedControl *) sender).selectedSegmentIndex) {
    case 0:
        [self curlViewControllerDidFinish:nil];
        [self.delegate setMapType:MKMapTypeStandard];
        [self dismissModalViewControllerAnimated:YES];
        break;

    case 1:
        [self curlViewControllerDidFinish:nil];
        [self.delegate setMapType:MKMapTypeSatellite];
        [self dismissModalViewControllerAnimated:YES];
        break;

    case 2:
        [self curlViewControllerDidFinish:nil];
        [self.delegate setMapType:MKMapTypeHybrid];
        [self dismissModalViewControllerAnimated:YES];
        break;

    }
}