我在myannotation类自定义中添加了beepid作为字符串,这是休息:
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
DLog(@"calloutAccessoryControlTapped");
/// detail page opening but beeid not passing
MyAnnotation *myAnnot = (MyAnnotation *)view.annotation;
BeepsDetail *objCont = [[BeepsDetail alloc] initWithNibName:@"BeepsDetail" bundle:nil];
objCont.mId = myAnnot.beepid;
objCont.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController: objCont animated: YES];
//[paramDic setValue:[mObject.mDic objectForKey:@"beepid"] forKey:@"beepid"];
[objCont release];
}
答案 0 :(得分:2)
该行
NSMutableDictionary *dic = [placeName objectAtIndex:MKAnnotationView.annotion];
给出错误,因为MKAnnotationView
是类,并且类中没有annotation
方法。您将使用的是view.annotation
,因为view
是所选MKAnnotationView
的实例。此外,annotion
拼写错误。
但是,由于view.annotation
是注释对象而不是placeName
数组中的整数索引,因此仍然无效。
你说你是“点击右箭头”,这意味着标注中有正确的标注附件按钮(而不是注释本身)。在这种情况下,您应该使用calloutAccessoryControlTapped
委托方法而不是didSelectAnnotationView
来检测选择。
在这两种情况下,您首先使用view.annotation
访问注释对象,然后使用注释对象的某些属性(可能是自定义),确定详细数据。
例如,如果您已创建自定义MKAnnotation
类(而不是使用MKPointAnnotation
),则可以向其添加beepId
属性,在创建注释时设置它,并在您可以像这样检索委托方法:
MyAnnotationClass *myAnnot = (MyAnnotationClass *)view.annotation;
objCont.mId = myAnnot.beepid;