Как я могу изменить mapView mapType из частичного завитка? - PullRequest
0 голосов
/ 27 марта 2012

Я пытаюсь воссоздать функцию Карт 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;

    }
}

Переход с помощью curl завершается, но mapType не изменяется.Я попытался поставить [mapview setmapType... над [self curlViewControllerDidFinish....

Примечание: [mapview setMapType:MKMapTypeHybrid]; меняет mapType с 1 строкой кода, если выполняется вне перехода curl.

Есть идеи как это исправить?

1 Ответ

2 голосов
/ 27 марта 2012

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;

    }
}
...