पहले मानचित्र में एक टिप्पणी जोड़ें और viewForAnnotation
विधि में, प्रकार का एक बटन को rightCalloutAccessoryView
निर्धारित करते हैं, कहते हैं, UIButtonTypeDetailDisclosure (मुझे नहीं लगता कि नीले रंग की जानकारी बटन डिफ़ॉल्ट रूप से उपलब्ध है)।
बटन दबाकर calloutAccessoryControlTapped
प्रतिनिधि विधि को कॉल किया जाएगा। इस विधि में, एनोटेशन को अचयनित करें और अपना पॉपओवर दिखाएं। उदाहरण के लिए:
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
[mapView deselectAnnotation:view.annotation animated:YES];
YourContentViewController *ycvc = [[YourContentViewController alloc] init...
UIPopoverController *poc = [[UIPopoverController alloc] initWithContentViewController:ycvc];
[ycvc release];
//hold ref to popover in an ivar
self.annotationPopoverController = poc;
//size as needed
poc.popoverContentSize = CGSizeMake(320, 400);
//show the popover next to the annotation view (pin)
[poc presentPopoverFromRect:view.bounds inView:view
permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
[poc release];
}
YourContentViewController UIViewController का एक उपवर्ग है जो आप किसी अन्य दृश्य नियंत्रक की तरह कोड कर सकते हैं। मैप्स ऐप ऐसा लगता है कि इसमें सामग्री में UITableView है।
ग्रेट उत्तर, वास्तव में विस्तृत। – Robert
मैप्स ऐप में इस परिदृश्य में एक दिलचस्प एनीमेशन है, छोटे बुलबुले को खारिज कर दिया गया है और नया पॉपओवर प्रस्तुत किया गया है, छोटे बबल वास्तव में पॉपओवर व्यू को फिट करने के लिए फैलता है। कोई विचार यह कैसे पूरा करने के लिए? –
@ क्रिस वॉगनर: पता नहीं कैसे मैप्स ऐप करता है लेकिन शुरुआत में छोटी ऊंचाई के साथ पॉपओवर प्रदर्शित करने का प्रयास करें और फिर टाइमर या प्रदर्शन चयनकर्ता का उपयोग करें: withObject: afterDelay, मैन्युअल रूप से एनिमेटिंग popoverContentSize और अद्यतन रीक्ट के साथ पॉपओवर को फिर से प्रस्तुत करना (मूल स्थानांतरित हो गया है और ऊंचाई में वृद्धि हुई)। एक और विकल्प पहले कस्टम कस्टम UIView को प्रदर्शित/एनिमेट करना हो सकता है जो कि मध्य से फैलता है और उसके बाद अंतिम आकार के पॉपओवर को प्रदर्शित करता है (और नीचे कस्टम UIView को हटाएं)। मानचित्र ऐप में, कॉलआउट भी बाएं/दाएं स्थानांतरित करता है और यह view.callout ऑफ़सेट को अपडेट करके किया जा सकता है। – Anna