I have an app that has a mapview, and it shows 20 pins (from an Array) on the map. When the user clicks on it, it can show a bubble with a right accessory button. Here come my problem: How do I know which pin was pressed? I heard something about the mapView:didSelectAnnotationView method, but I don't really understand how do you get the pin/callout index, so that I can get the information of the object at the same index of my Array? Thanks for any help!
相关问题
- Core Data lightweight migration crashes after App
- How can I implement password recovery in an iPhone
- State preservation and restoration strategies with
- “Zero out” sensitive String data in Swift
- Get the NSRange for the visible text after scroll
相关文章
- 现在使用swift开发ios应用好还是swift?
- UITableView dragging distance with UIRefreshContro
- TCC __TCCAccessRequest_block_invoke
- Where does a host app handle NSExtensionContext#co
- Swift - hide pickerView after value selected
- How do you detect key up / key down events from a
- didBeginContact:(SKPhysicsContact *)contact not in
- Attempt to present UIAlertController on View Contr
Here is a similar solution to Canopus'.
Note: I was manually adding annotations to the map and then viewing their respective indexes. They don't get indexed in the order they are added to the mapView. i.e., just because you added a annotation as the fourth annotation it may have an index of 1 or 3 or whatever. Someone may have a explanation for that but it has eluded me till now. Hope this helps.
When that method gets called -- because your viewController class has adopted
MKMapViewDelegate
, you can call-indexOfObject
on the array and get the index of that pin (annotation). This is with the assumption that your array holds objects of the kind of annotation class.If you need more explanation, we need to know how you are adding those pins, i.e. implementation of
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
.