2014-01-20 66 views
0

我是IOS開發的初學者。所以希望有人能夠用一些細節來解釋它。該方法用於viewforannotation。[mv setRegion:region animated:yes]的用途;

如果我繼續

[mv setRegion:region animated:yes] 

在函數的末尾,則該代碼將在一個無限循環不知何故,當我在地圖上放大。

如果我刪除它,mapview可以很好地工作。

由於我沒有寫代碼,我沒有看到使用該行的目的。有人能告訴我這一行是必要的嗎?

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