在iOS标注注释中集成UITableView

时间:2016-01-03 20:28:34

标签: ios swift uitableview mkannotationview calloutview

我的应用会显示带有一些引脚点的地图。当触摸其中一个引脚时,我想想象一个标注气泡内的tableview。 我找到了类似here的东西,但它在Objective-C中(我想要一个纯粹的Swift方法),它需要禁用自定义视图的自动布局(我宁愿避免)。

enter image description here

如何实施此解决方案或在哪里可以找到可以找到它的库?

1 个答案:

答案 0 :(得分:2)

这是一种方式:

让您的主控制器实现UIPopoverPresentationControllerDelegate,并覆盖其方法:

func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
    return .None
}

在viewDidLoad()中设置点击手势识别器:

let tapGesture = UITapGestureRecognizer(target: self, action: Selector("tappedOnMap:"))
yourView.userInteractionEnabled = true
yourView.numberOfTapsRequired = 1
yourView.addGestureRecognizer(tapGesture)

定义“tappedOnMap”以弹出一个popover:

func tappedOnMap(sender: UITapGestureRecognizer) {
    let location = sender.locationInView(self.view)
    let storyboard = UIStoryboard(name: "Main", bundle: nil)        
    let vc = storyboard.instantiateViewControllerWithIdentifier("tableViewControllerClass") as! tableViewControllerClass
    vc.modalPresentationStyle = .Popover
    vc.preferredContentSize = CGSizeMake(200, 150)

    if let popoverController = vc.popoverPresentationController {
        // Create popover at tapped point.
        popoverController.delegate = self
        popoverController.sourceRect = CGRectMake(location.x, location.y, 20, 10)
        popoverController.sourceView = self.view
        self.presentViewController(vc, animated: true, completion: nil)
    }
}

定义“tableViewControllerClass”以获取表视图,并将其附加到storyboard中的场景。希望有所帮助。