2014-01-20 2 views
0

Я начинаю разработку IOS. Поэтому желаю, чтобы кто-то мог объяснить это с некоторыми деталями. Этот метод предназначен для просмотра.Цель [mv setRegion: region animated: yes];

Если я держу

[mv setRegion:region animated:yes] 

в конце функции, то код будет в бесконечном цикле как-то, когда я масштаб карты.

Если я удалю его, карта будет работать отлично.

Поскольку я не писал код, я не вижу цели использования линии. Может ли кто-нибудь сказать мне, нужна ли эта линия?

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { 

UIButton *abutton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
[annotationView setRightCalloutAccessoryView:abutton]; 

MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(annotation.coordinate, 8000, 8000); 
[mapview setRegion:region animated:YES]; 

return annotationView; 
} 
+0

можете ли вы разместить свой код, где вы его реализовали? – Tirth

+0

Код добавлен. Благодарю. –

+0

Ответ Крэйга правильный. Эта линия там не принадлежит. Вы не разместили весь код, поэтому неясно, почему его написал оригинал. – Anna

ответ

2

Вы не должны редактировать местоположение карты в пределах viewforannotation. viewForAnnotation вызывается, когда карте необходимо нарисовать аннотации на карте, если при этом вы изменяете часть карты, на которую перемещается MKMapView, будут отображаться различные аннотации, поэтому изнутри viewForAnnotation вы вызываете вызов viewForAnnotation снова ==> бесконечный цикл.

Так что если вы говорите, что код отлично работает без него, то удалите его и будьте счастливы. Это мой совет для любого кода. Если приложение работает без него, удалите его. Нет смысла увеличивать ваше приложение с помощью ненужного кода.

+0

Функция - (MKAnnotationView *) mapView: (MKMapView *) mapView viewForAnnotation: (id ) аннотация , которая использует viewForAnnotation и имеет линию в самом конце. Это то, что вы имели ввиду? Я обнаружил разницу, которая будет корректировать карту, чтобы она соответствовала определенному региону. Однако, когда я увеличиваю масштаб области, карта остановится, и программа попадет в этот бесконечный цикл. –

+0

Вы не должны изменять регион, который карта просматривает в этой функции. Вы должны * только * создавать и возвращать представление для аннотации, которую запрашивает iOS. Перемещение карты, в то время как она просит вас нарисовать аннотации, безусловно, плохая идея. – Craig

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