Nido Apple

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

Disclosure Button

Hola, Llevo muy poco tiempo con xcode4 , y me gustaría me indicaran un ejemplo de una MKAnnottation en un mapa , y que incluya un Disclosure Button que al presionarlo me lleve a otra view. gracias de antemano. slds.

7 Respuestas

0voto

Peter Puntos289420
Bienvenido al sitio josean. Por favor explica un poco más a detalle que es lo que quieres hacer, para así darte un ejemplo que te funcione mejor. ¿Que va a hacer la aplicación? ¿La vas a integrar con algo más? ¿No te funciona algo? ¿Algo en especial dentro de los mapas o solo una anotación? Etc... Saludos.

0voto

josean Puntos480
Quiero poner varias anotaciones en distintos puntos del mapa y en cada una de ellos un botón que me lleve a una vista diferente. Tengo hecho esto únicamente una anotación. [PHP]- (void)viewWillAppearBOOL)animated { CLLocationCoordinate2D Localizacion1; Localizacion1.latitude = 42.784670; Localizacion1.longitude = -4.835606; MKPointAnnotation *anotacion = [[MKPointAnnotationalloc] init]; anotacion.coordinate = Localizacion1; anotacion.title = @"Guardo"; anotacion.subtitle = @"Centro-Ciudad"; [localizacion addAnnotation:anotacion]; MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(Localizacion1, 1680, 1680); MKCoordinateRegion adjusteRegion = [localizacion regionThatFits:viewRegion]; [localizacion setRegion:adjusteRegion animated:YES]; }[/PHP] Pero para el botón dentro de la anotación y que me lleve a otra vista, no se como hacerlo, la verdad que todo este código lo he visto por la web, y quizás estoy empezando con funcionalidad demasiado complejas para mi. Esto de momento me funciona. Si puedes ayudarme te lo agradecería. un saludo.

0voto

Peter Puntos289420
Prueba con este ejemplo y nos cuentas. [PHP]- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id ) annotation { static NSString *annReuseId = @"currentloc"; MKPinAnnotationView *annView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:annReuseId]; if (annView == nil) { annView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annReuseId]; annView.animatesDrop = YES; annView.canShowCallout = YES; UIButton *detailButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; annView.rightCalloutAccessoryView=detailButton; } else { annView.annotation = annotation; } return annView; } - (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { NSLog(@"calloutAccessoryControlTapped: annotation = %@", view.annotation); MyDetailViewController *detailView=[[MyDetailViewController alloc] initWithNibName:@"MyDetailViewController" bundle:nil]; //aquí puedes poner la info de una anotación en algún property del detailView [[self navigationController] pushViewController:detailView animated:YES]; [detailView release]; }[/PHP] Por favor para poner código utiliza el botón de código, así no se pierden caracteres, porque en estos casos es importante que salga bien en lugar de caritas. Saludos.

0voto

josean Puntos480
Hola, Me da el siguiente error Use of undeclared identifier 'detailView' en la última parte del código que me has enviado, estoy segurísimo que es muy básico y que tengo que adaptar tu código a mi proyecto , pero por más que pienso no doy con ello. tengo que declaran algo en el .h ? Muchísimas gracias por tu interés- [PHP]- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { NSLog(@"calloutAccessoryControlTapped: annotation = %@", view.annotation); MyDetailViewController *detailView=[[MyDetailViewController alloc] initWithNibName:@"MyDetailViewController" bundle:nil]; //aquí puedes poner la info de una anotación en algún property del detailView [[self navigationController] pushViewController:detailView animated:YES]; [detailView release]; }[/PHP]

0voto

Peter Puntos289420
Si, lo tienes que declarar, no era para que lo integraras, si no para hacerlo por completo. De todos modos si quieres integrarlo directo a tu código y que solo con darle click al pin se vaya a otro view prueba esto. [PHP]- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view { // Aquí pasas a tu viewcontroler }[/PHP] O también [PHP]- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { // Tu código aquí }[/PHP] Saludos.

0voto

josean Puntos480
Ya me compila , pero no me aparece ningún botón.... me faltaba un nuevo viewcontroller , pero algo me falla... este es todo mi .m [PHP] #import "ViewController.h" #import "ViewController2.h" @implementation ViewController @synthesize mapa; - (void)viewWillAppear:(BOOL)animated { CLLocationCoordinate2D PrimeraLocalizacion; PrimeraLocalizacion.latitude = 42.784670; PrimeraLocalizacion.longitude = -4.835606; //Create Pin MKPointAnnotation *anotacion = [[MKPointAnnotation alloc] init]; anotacion.coordinate = PrimeraLocalizacion; anotacion.title = @"Guardo"; anotacion.subtitle = @"Centro-Ciudad"; [mapa addAnnotation:anotacion]; //Crear Region MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(PrimeraLocalizacion, 1680, 1680); MKCoordinateRegion adjusteRegion = [mapa regionThatFits:viewRegion]; [mapa setRegion:adjusteRegion animated:YES]; } //create disclosure button - (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id ) annotation { static NSString *annReuseId = @"currentloc"; MKPinAnnotationView *annView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:annReuseId]; if (annView == nil) { annView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annReuseId]; annView.animatesDrop = YES; annView.canShowCallout = YES; UIButton *detailButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; annView.rightCalloutAccessoryView=detailButton; } else { annView.annotation = annotation; } return annView; } - (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { NSLog(@"calloutAccessoryControlTapped: annotation = %@", view.annotation); ViewController2 *detailView=[[ViewController2 alloc] initWithNibName:@"ventana" bundle:nil]; //aquí puedes poner la info de una anotación en algún property del detailView [[self navigationController] pushViewController:detailView animated:YES]; } @end[/PHP]

0voto

markfree Puntos4510
Yo lo haria asi: [PHP] - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id )annotation{ MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"CustomPinAnnotationView"]; pinView.pinColor = MKPinAnnotationColorGreen; pinView.animatesDrop = YES; pinView.canShowCallout = YES; UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; [rightButton addTarget:self action:@selector(showDetails:) forControlEvents:UIControlEventTouchUpInside]; return pinView; } - (IBAction)showDetails:(id)sender { webview = [[[WebViewController alloc]init] initWithNibName:@"WebViewController" bundle:nil]; [webview rebreUrl:url]; webview.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [self presentModalViewController:webview animated:YES]; }[/PHP]

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...