【问题标题】:Updating an AnnotationView Callout after details entered in View Controller that was pushed form the map view在从地图视图推送的视图控制器中输入详细信息后更新 AnnotationView 标注
【发布时间】:2016-01-20 03:57:41
【问题描述】:

我有一个简单的地图应用程序,地图视图上有多个图钉。我的意图是点击一个图钉,显示一个带有附件视图的标注,推送到一个详细视图控制器,您可以在其中编辑该图钉/位置详细信息。这一切都很好,但是一旦我弹出详细视图控制器,地图视图上的标注仍然存在,这是我想要的,但它仍然具有旧的未编辑值。弹出详细视图控制器后如何刷新/更新标注视图?

我将 Core Data 与一个简单的数据库一起使用。我尝试过使用 controllerdidchangecontent、Map View Controller Will Display 方法等,但我的主要问题是确定哪个对象已添加/更新/删除,以及哪个是相应的标注/选定的 pin。

任何帮助表示赞赏...

【问题讨论】:

    标签: android-mapview callouts


    【解决方案1】:

    不确定您是否找到了答案,但方法是扩展 MKAnnotation 类并创建自定义注释并在创建地标时传递它们。稍后您可以从 MKAnnotationView 的 annotation 属性中获取它们。

    在这里查看一个好的实现

    http://www.slideshare.net/360conferences/getting-oriented-with-mapkit-everything-you-need-to-get-started-with-the-new-mapping-framework

    【讨论】:

      【解决方案2】:

      我能找到更新标注信息的唯一方法是直接弄乱标注的子视图。

      标注视图是注释视图的第一个子视图。

      在下面的例子中,我更新了字幕。标题标签是第 6 个,字幕是标注的第 7 个子视图:

      if (myAnnotationView.subviews.count > 0)
          ((UILabel*)[((UIView*)[myAnnotationView.subviews objectAtIndex:0]).subviews objectAtIndex:7]).text = @"Some example";
      

      【讨论】:

      • 确实,但更改字幕的内容(索引 7)不会更新标注(它对我不起作用)。此外,更改标题不会调整标注的大小。
      • @EduardoMauro 你能告诉我你在什么iOS上试过这个吗?也许他们在比 iOS 5.1.1 更新的版本中更改了布局,在这种情况下我也有问题 :)。关于调整大小,是的,很可能您也必须手动进行调整:( ...
      • 不幸的是,我没有任何设备运行该特定版本。我检测到哪个是包含字幕的视图的方式是遍历所有子视图,NSLog-ed [mySubview class] 并寻找那些将 UILabel 作为类的。但这带来了可移植性的问题,如果你说它不适用于 4.2。如果您要继续测试,请在您的子视图结构中留下评论,也许我可以使代码适应。
      • 请注意,这(显然)在 iOS7 中不再起作用 :(
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多