Objective c 单击rightCalloutAccessoryView时推送另一个视图
当我单击PIN上的右侧标注时,我想移动到名为Objective c 单击rightCalloutAccessoryView时推送另一个视图,objective-c,uiviewcontroller,ios5,storyboard,Objective C,Uiviewcontroller,Ios5,Storyboard,当我单击PIN上的右侧标注时,我想移动到名为details mes的新视图控制器,但是,当我这样做时: -(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { [self.navigationController pushViewController:self.detailsThemes
details mes
的新视图控制器,但是,当我这样做时:
-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
[self.navigationController pushViewController:self.detailsThemes animated:YES];
}
我得到了这个错误:
Property detailsThemes not found on object of type 'ViewController *';
did you mean to access ivar 'detailsThemes'?
虽然,detailsThemes
是UIViewController类detailsThemes
的一个实例,但在我的类中,我确实使用@class detailsThemes调用了detailsThemes
类文件顶部的代码>如下所示:
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
@class DetailsThemes;
@interface ViewController : UIViewController<MKMapViewDelegate>
{
DetailsThemes * detailsThemes;
}
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@end
#导入
#进口
@课堂细节时间;
@界面ViewController:UIViewController
{
详细时间*详细时间;
}
@属性(弱,非原子)IBMMapView*mapView;
@结束
编辑:
-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
NSLog(@"calloutAccessoryControlTapped: %@",view.annotation);
[self.navigationController pushViewController:self.detailsThemes animated:YES];
}
- (MKAnnotationView *)mapView:(MKMapView *)map viewForAnnotation:(id <MKAnnotation>)annotation {
static NSString *identifier = @"ManageAnnotations";
MKPinAnnotationView *annotationView = (MKPinAnnotationView *) [map dequeueReusableAnnotationViewWithIdentifier:identifier];
if (annotationView == nil) {
annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
} else {
annotationView.annotation = annotation;
}
annotationView.enabled = YES;
[annotationView setAnimatesDrop:YES];
annotationView.canShowCallout = YES;
//annotationView.pinColor = ((ManageAnnotations *)annotation).pinColor;
annotationView.rightCalloutAccessoryView=[UIButton buttonWithType:UIButtonTypeInfoLight];
return annotationView;
}
-(void)映射视图:(MKMapView*)映射视图注释视图:(MKAnnotationView*)视图调用访问控制点击:(UIControl*)控制
{
NSLog(@“calloutAccessoryControlTapped:%@”,view.annotation);
[self.navigationController pushViewController:self.details动画时间:是];
}
-(MKAnnotationView*)地图视图:(MKMapView*)地图视图注释:(id)注释{
静态NSString*标识符=@“ManageAnnotations”;
MKPinAnnotationView*annotationView=(MKPinAnnotationView*)[map dequeueReusableAnnotationViewWithIdentifier:identifier];
如果(注释视图==nil){
annotationView=[[MKPinAnnotationView alloc]initWithAnnotation:annotation重用标识符:标识符];
}否则{
annotationView.annotation=注释;
}
annotationView.enabled=是;
[注释视图集动画下拉:是];
annotationView.canShowCallout=是;
//annotationView.pinColor=((ManageAnnotations*)annotation.pinColor;
annotationView.rightCalloutAccessoryView=[UIButton按钮类型:UIButtonTypeInfoLight];
返回注释视图;
}
在您的视图加载方法中,您必须首先分配详细信息时间,然后在调用中使用它。如果仍然未成功,请发布Callout AccessoryView的代码您是否阅读了错误消息?读两遍,它有解释。您必须声明@property以获取详细信息,有时也可以直接访问ivar。我这样做了,好吧,现在一切都很好,但是,当我单击PIN的右信息按钮时,我什么都没有,详细信息视图不收费。Callout AccessoryControlTapped是否真的被调用?在里面放一个NSLog或断点。嗨,我已经编辑了我的帖子,实际上,calloutAccessoryControlTapped
被调用了,这就是为什么我有点困惑的原因,我已经为details类声明了一个属性,但是我什么也没有得到,当我点击PIN的info按钮时细节视图没有被推上。