Открыть представление, когда вызывается calloutAccessoryControlTapped
Как я могу открыть представление, когда я нажал кнопку аннотации с навигационной кнопкой, чтобы вернуться к моему mapkit и передать некоторые параметры представлению?
С уважением
2 ответа
Я нашел решение. Внутри:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
Добавлять:
UIButton *btn = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[btn addTarget:self action:@selector(pinTouched:) forControlEvents:UIControlEventTouchUpInside];
Тогда есть функция, чтобы открыть желаемый вид:
-(void)pinTouched:(UIButton *)sender
{
myView.transform = CGAffineTransformMakeScale(.01, .01);
[self.view addSubview:myView];
}
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id) аннотация {
.........
//важный
// в противном случае calloutAccessoryControlTapped не вызывается
pin.canShowCallout = YES;
pin.calloutOffset = CGPointMake (-10, -10);
UIImageView * leftIconView = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @ "some.png"]];
leftIconView.backgroundColor = [UIColor clearColor];
leftIconView.contentMode = UIViewContentModeScaleAspectFit;
leftIconView.frame = CGRectMake (0, 0, 40, 40);
pin.leftCalloutAccessoryView = leftIconView;
....
....
возвратный штифт;
}
- (void) mapView: (MKMapView *) mapView annotationView: (MKAnnotationView *) представление calloutAccessoryControlTapped: (UIControl *) control {
// постучал аннотацией
float viewWidth = 100;
float viewHeight = 300;
float viewX = 50;
float viewY = 50;
CGRect viewRect = CGRectMake (viewX, viewY, viewWidth, viewHeight);
UIView * viewSub = [[UIView alloc] initWithFrame: viewRect];
viewSub.backgroundColor = [UIColor redColor];
viewSub.tag = 666;
[self.view addSubview: viewSub];
[self.view takeSubviewToFront: viewSub];
}