我有一些地方的數組。每個地方都顯示在同一屏幕上的MapView和TableView上。當我點擊表格視圖上相應的行時,我想彈出一個地點的註釋。以編程方式從數組中選擇地圖註釋
我有下面的代碼來填充註釋:
for (int i = 0; i < [self.myPlaces count]; i++)
{
MKPointAnnotation *point = [[MKPointAnnotation alloc] init];
SPlaces *ev = [self.myPlaces objectAtIndex:i];
point.coordinate = CLLocationCoordinate2DMake([ev.location.latitude doubleValue], [ev.location.longitude doubleValue]);
point.title = ev.title;
point.subtitle = ev.type.name;
[self.myMap addAnnotation:point];
}
這個代碼,以顯示註釋當在TableView中選擇了行:
//row = tapped row on TableView
[self.myMap selectAnnotation:[[self.myMap annotations] objectAtIndex:row] animated:YES];
的問題是,註釋似乎在myMap註釋數組中有一個隨機索引。 我的意思是,我想有這種行爲:
users taps row 0 on Table view => annotation of pin 0 pops up on the map
users taps row 1 on Table view => annotation of pin 1 pops up on the map
users taps row 2 on Table view => annotation of pin 2 pops up on the map
但不是這個,我得到:
users taps row 0 on Table view => annotation of pin 1 pops up on the map
users taps row 1 on Table view => annotation of pin 0 pops up on the map
users taps row 2 on Table view => annotation of pin 2 pops up on the map
...或者每個I重啓時間更改任何其他隨機組合應用程序。 請注意,如果我啓用了用戶的位置,我的一個pin註釋可以將其標題隨機更改爲「當前位置」。
我很確定我正在填寫或正確訪問註釋。你有任何線索嗎?
謝謝!
編輯:這篇文章似乎是說,你要掃描您的註解陣列,尋找匹配的標題,然後選擇相應的註解:Open Map Annotation from Selected Row in Table View 這真的是唯一的出路?由於兩個引腳可能共享相同的標題,所以看起來有點危險......
你應該能夠行值分配到註解的'tag'和與之相匹配上,而不是冠軍? – Flexicoder
MKPointAnnotation沒有任何「標籤」屬性。也許我將不得不使用自定義AnnotationView ... –
對不起,我已經使用'MKPinAnnotationView'在過去有標籤。我想知道如果你可以使用'[self.myMap viewWithTag:]'來獲得正確的並且選擇它嗎? – Flexicoder