objective-c - 刷新 mkannotation 属性和刷新注释

标签 objective-c iphone annotations android-mapview

我有一个位于 mapview 上的 mkannotation,它有一个 mkannotationview 以及一个 calloutview,单击它时会转到子 uiviewcontroller。我正在更新标注的 uiviewcontroller 的一些属性,但完成后我想移动 map 上注释的位置并更改注释标题和副标题。我怎样才能从标注的 uiviewcontoller 轻松地做到这一点?处理这个问题最优雅的方法是什么?如果有人有代码示例,那就太好了。

谢谢

最佳答案

我会创建一个协议(protocol),比如 MapCallBackDelegate,来处理您想做的事情。这避免了紧密耦合的代码。把这个放在你的 map 注释 View 头文件中

@protocol MapCallBackDelegate
    -(void)updateAnnotation:(id)whatEverParamsYouWant;
@end

然后让你的 map View 实现这个协议(protocol)。当你创建你的 map 注释 View 时,给它一个属性

@property (nonatomic, retain) id<MapCallBackDelegate> callbackDelegate;

当您将它添加到您的 map 时,将该属性设置为 self

myMapAnnotationView.callbackDelegate = self;

因此,当您想要更改标题/副标题/位置时,只需在 callbkacDelegate 上调用该消息即可。

这很优雅,因为它减少了紧密耦合的代码,允许其他对象实现相同的协议(protocol)以供以后代码重用,并促进信息隐藏在您的 MapAnnotationView 中。

关于objective-c - 刷新 mkannotation 属性和刷新注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1371138/

相关文章:

java - 强制一个类实现两个实现另一个接口(interface)的接口(interface)之一

iphone - 如何以编程方式创建选项卡栏并在其上添加按钮

iphone - 当导入的文件不可用时如何避免崩溃?..IOS 7

java - 将 jsonObject 转换为模型对象时如何检测缺少的字段

iphone - 使用 UIPrintInteractionController 打印 PDF ios 5 有效,但在 ios 6 中不起作用并使我的应用程序崩溃

iphone - 如何在没有UITableViewController的情况下结束UIRefreshControl

android - Activity_ 不是抽象的,不会覆盖 HasViews 中的抽象方法 findViewById(int)

objective-c - 属性赋值后自动释放

ios - 观看视频广告后在屏幕上更新分数

objective-c - iOS 上的手势过滤