Conecta
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
Disclosure Button
- preguntó
- Desarrolladores Apple
- 411 Vistas
- 7 Respuestas
- abierta
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
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.
Por favor, accede o regístrate para añadir un comentario.
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.
Por favor, accede o regístrate para añadir un comentario.
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.
Por favor, accede o regístrate para añadir un comentario.
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]
Por favor, accede o regístrate para añadir un comentario.
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.
Por favor, accede o regístrate para añadir un comentario.
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]
Por favor, accede o regístrate para añadir un comentario.
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 añadir un comentario.
Por favor, accede o regístrate para responder a esta pregunta.
En el blog
-
- 682871
- 1
- Ago 31, 2017
Otras Preguntas y Respuestas
- entre Desarrolladores (Desarrolladores)
Respuestas WordPress (Usuarios WordPress)
Sin Respuesta
-
- 571
- 0
- Jun 16
-
- 752
- 0
- May 8
-
- 785
- 0
- Feb 23
-
- 753
- 0
- Dic 7, 2023
-
- 325
- 0
- Nov 30, 2023
-
- 757
- 0
- Jul 7, 2023
-
- 873
- 0
- Ago 4, 2022
-
- 1030
- 0
- Feb 25, 2022
- ver todas
No se han encontrado preguntas relacionadas
Actividad Reciente
Peter comentó hace 4 días
No veo las carpetas de Aplicaciones y Descargas en…Itavi respondió Nov 5
No veo las carpetas de Aplicaciones y Descargas en…DaleGarrote comentó Nov 5
IA ese perfecto desconocidoPeter comentó Nov 5
Comando de voz para desplazarse un número variable…Peter respondió Nov 5
No veo las carpetas de Aplicaciones y Descargas en…
Ultimas Respuestas
Peter respondió
Supongo que te refieres a tenerlas en el Dock, por
0Peter respondió
Efectivamente hay cientos o miles de cosas sobre I
1DJUNQUERA respondió
La versión de MacOS Sonoma habilita un comando de
1Peter respondió
Creo que lo mas sencillo es que te pagas en contac
1Peter respondió
Me parece que es un problema de RAM y va a depende
1mozzer respondió
0Peter respondió
Si es por el sistema, ya que requieres macOS Ventu
1Ultimos Comentarios
DaleGarrote comentó
No se han encontrado preguntas relacionadas
...