![](/img/trans.png)
[英]How to make the callout button in an annotation in MKMapKit go to another view controller
[英]How to pass annotation title to another view controller
我是iOS编程的新手,并且在视图控制器之间传递数据时遇到麻烦。
我有一个视图控制器,可对地图视图上的注释进行地址解析,并将地址设置为注释视图的标题。 批注视图具有一个标注按钮,该标注按钮将另一个视图推送到具有标签的堆栈中,我希望将经过地理编码的地址显示为标签。 这是一些代码:
这是我放针的地方:
-(void)press:(UILongPressGestureRecognizer *)recognizer
{
CGPoint touchPoint = [recognizer locationInView:worldView];
CLLocationCoordinate2D touchMapCoordinate = [worldView convertPoint:touchPoint toCoordinateFromView:worldView];
geocoder = [[CLGeocoder alloc]init];
CLLocation *location = [[CLLocation alloc]initWithCoordinate:touchMapCoordinate
altitude:CLLocationDistanceMax
horizontalAccuracy:kCLLocationAccuracyBest
verticalAccuracy:kCLLocationAccuracyBest
timestamp:[NSDate date]];
[geocoder reverseGeocodeLocation:location
completionHandler:^(NSArray *placemarks, NSError *error) {
NSLog(@"reverseGeocoder:completionHandler: called");
if (error) {
NSLog(@"Geocoder failed with error: %@", error);
}
if (placemarks && placemarks.count > 0)
{
CLPlacemark *place = [placemarks objectAtIndex:0];
_address = [NSString stringWithFormat:@"%@ %@, %@ %@", [place subThoroughfare], [place thoroughfare], [place locality], [place administrativeArea]];
if (UIGestureRecognizerStateBegan == [recognizer state]) {
_addressPin = [[MapPoint alloc]initWithCoordinate:touchMapCoordinate
title:_address];
[worldView addAnnotation:_addressPin];
}
}
}];
}
这是我要显示地址的视图的代码:
#import <UIKit/UIKit.h>
@class MapPoint;
@interface PinViewController : UIViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate,UITextFieldDelegate>
{
__weak IBOutlet UILabel *addressLabel;
}
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property (strong, nonatomic) MapPoint *pin;
-(void)takePicture:(id)sender;
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
@end
#import "PinViewController.h"
#import "MapPoint.h"
@interface PinViewController ()
@end
@implementation PinViewController
@synthesize imageView, pin;
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[addressLabel setText:[pin title]];
}
MapPoint类具有title属性和subtitle属性。 当PinViewController被推到堆栈的顶部时,我尝试将标签的文本设置为引脚的标题,但是标签不显示任何文本。 有人可以帮我一下,告诉我我想念什么吗? 非常感谢您的帮助。
您必须为此问题共享更多代码块:)。 而不是您必须对面向对象程序中的通信有更多的了解
您可以在此处阅读有关在视图类之间传递数据的很好的教程。
在此处阅读在两个视图之间传递对象的最佳方法
我在Developer.apple中找到了一份关于CommunicatingWithObjects的好文档。
您也可以在这里观看精彩的视频
只需为标签创建属性,然后从标注的点击方法中传递标签文本
- (void)mapView:(MKMapView *)mapView annotationView:(MKPinAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
Details *det=[[Details alloc]init];
det.label.text=annotation.title;
[self.navigationController pushViewController:det animated:YES];
[det release];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.