一种方法是使用委托模式。简而言之...
// GMDraggableMarkerManager.h
@protocol GMDraggableMarkerManagerDelegate;
@property(weak,nonatomic) id<GMDraggableMarkerManagerDelegate>delegate;
@protocol GMDraggableMarkerManagerDelegate <NSObject>
- (void)gMDraggableMarkerManager:(GMDraggableMarkerManager *)dmm didFinishDraggingAt:(CLLocationCoordinate2D)coord;
@end
// GMDraggableMarkerManager.m
// somewhere in here, after dragging is complete
// the last coordinate is coord
[self.delegate gMDraggableMarkerManager:self didFinishDraggingAt:coord];
最重要的是,没有人可以从可拖动标记管理器中获取最后拖动坐标的值。它有一个委托,它声明它有责任通知它的委托有关拖动的完成。
现在您只需要将视图控制器设置为委托。
// in ViewController.m
#import "GMDraggableMarkerManager.h"
@interface ViewController () <GMDraggableMarkerManagerDelegate>
// ...
@end
@implementation ViewController
// not sure how you get a handle to the GMDraggableMarkerManager
// maybe you create it here?
// however you get it...
GMDraggableMarkerManager *dmm = // however
dmm.delegate = self;
最后,实现委托方法(因为您正确声明了所有内容,编译器会警告您如果找不到方法,您声称要实现协议)。
- (void)gMDraggableMarkerManager:(GMDraggableMarkerManager *)dmm didFinishDraggingAt:(CLLocationCoordinate2D)coord {
NSLog(@"ta-da %f,%f", coord.latitude, coord.longitude);
}