在注释标注内部有一个UITableViewcontroller

时间:2016-12-21 21:30:13

标签: ios swift mapbox

在MapBox中,我希望当用户触摸注释引脚时,会出现标注中的tableview。我尝试使用,但它最终覆盖整个屏幕。有没有更好的方法来实现这一目标?

func mapView(_ mapView: MGLMapView, leftCalloutAccessoryViewFor annotation: MGLAnnotation) -> UIView? {

    let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
  let vc: UITableViewController = storyboard.instantiateViewController(withIdentifier: "newtableview") as! UITableViewController


    self.present(vc, animated: true, completion: nil)
    return nil
}

为了更好地澄清,这与我想要实现的类似 For better clarification, this is similar to what I am trying to achieve

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为您正在将新的vc推送到导航堆栈。以前的地图vc现在位于上一页。要实现该功能,您必须从头开始创建标注。以下内容将为您提供最大程度的自定义控制:

  1. 子类MKAnnotation。这应包括自定义标注所需的所有数据

  2. 子类UIView。该视图将包含您的tableview。它应接受步骤1中的数据。

  3. 使用mapView:didSelect委托方法。当用户选择注释时,将调用此方法,并传递一个MKAnnotationView,该MKAnnotationView具有MKAnnotation作为属性。将其作为子类投射,您应该拥有标注所需的所有数据

  4. 手动添加标注。从步骤2创建UIView的新实例。您可以从步骤3中说明的步骤1中访问MKAnnotation子类中的数据。将此视图作为子视图添加到地图中。

  5. 布局标注。手动设置框架或使用autolayout。您可以通过MKAnnotationView的框架获取所选注释的位置。

  6. 祝你好运!!!