【发布时间】:2015-04-22 07:00:42
【问题描述】:
我在 Core Data 中有一个包含所有属性的健身房列表,我使用 NSFetchRequest 获取这个健身房并将其传递给 NSArray,然后使用 For in 和这个数组,我可以将引脚放在 MapView 中,我用下一个代码来做(欢迎提出改进建议):
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:YES];
NSFetchRequest *reqInst = [NSFetchRequest fetchRequestWithEntityName:[KMTInstalacion entityName]];
reqInst.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:KMTInstalacionAttributes.tipoInstalacion_ES ascending:NO]];
KMTAppDelegate *appDelegate = (KMTAppDelegate *)[[UIApplication sharedApplication]delegate];
NSError *error;
NSArray *arrayInstalaciones = [appDelegate.model.context executeFetchRequest:reqInst error:&error];
NSLog(@"Las instalaciones encontradas en arrayInstalaciones son: %lu", (unsigned long)[arrayInstalaciones count]);
for (KMTInstalacion *todasInstalaciones in arrayInstalaciones) {
CLLocationCoordinate2D coordPunto1 = CLLocationCoordinate2DMake(todasInstalaciones.coorLatitudValue, todasInstalaciones.coorLongitudValue);
MKPointAnnotation *anotacion = [[MKPointAnnotation alloc]init];
[anotacion setCoordinate:coordPunto1];
[anotacion setTitle:todasInstalaciones.nombre_ES];
[anotacion setSubtitle:todasInstalaciones.direccion_ES];
[self.mapView addAnnotation:anotacion];
}}
- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation{
MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:@"curr"];
pinView.animatesDrop = NO;
pinView.pinColor = MKPinAnnotationColorRed;
pinView.canShowCallout = YES;
pinView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
return pinView;
-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control{
KMTMiAnotacion *anotacion = view.annotation;
KMTDetailVC *detalle = [[KMTDetailVC allc]init];
detalle.title = anotacion.title
detalle.nombreInstalacionSeleccionada = anotacion.instalacion;
[self performSegueWithIdentifier:@"deMapa" sender:self];
}
KMTMiAnotacion.h
@interface KMTMiAnotacion : NSObject <MKAnnotation>{
NSString *title;
NSString *subTitle;
KMTInstalacion *instalacion;
}
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subTitle;
@property (nonatomic, copy) KMTInstalacion *instalacion;
@end
当我点击其中一个 pinView 时,右侧的按钮会显示健身房的名称和地址。
现在我想要的是当您点击 pinView 按钮时,将您带到 DetailView 视图并发送完整的健身房对象 (KMTInstalacion) 对应您按下的 pinView,而不仅仅是标题或副标题,因为每个健身房大约有 50 个属性(照片、时间表等...)
知道怎么做吗?
【问题讨论】:
标签: ios objective-c core-data mkmapview mkannotation