0

Я пытаюсь воссоздать функцию Карт Google, которая меняет тип карты на гибрид или спутник или стандарт. У меня настроено представление, которое отображается в частичном переходе curl. В этом представлении находится UISegmentedControl. Когда это изменяется значение, то выполняется следующий код:Как изменить mapView mapType из частичного завитка?

- (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....

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

Любые идеи о том, как исправить это?

ответ

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; 

    } 
} 
+0

По-прежнему возникают проблемы с этим, я дам вам знать, как я это сделал, как только я заработал. –

Смежные вопросы