【问题标题】:Integrating UITableView inside iOS callout annotation在 iOS 标注注释中集成 UITableView
【发布时间】:2016-01-03 20:28:33
【问题描述】:

我的应用程序显示了一个带有一些针点的地图。当触摸其中一个引脚时,我想在标注气泡内可视化一个表格视图。 我发现了类似 here 的东西,但它在 Objective-C 中(我想要一个纯 Swift 方法),它需要禁用自定义视图的自动布局(我希望避免)。

我该如何实现这个解决方案,或者在哪里可以找到一个库?

【问题讨论】:

    标签: ios swift uitableview mkannotationview calloutview


    【解决方案1】:

    这是一种方法:

    让你的主控制器实现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”来弹出一个弹出框:

    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”以拥有您的表格视图,并将其附加到情节提要中的场景。希望对您有所帮助。

    【讨论】:

    • 不客气。我自己正在开发一个弹出框控制器 (i.imgur.com/89REGEb.png),但你提供的那个看起来比我的要好得多。打算给它一个灰色半透明的改造。
    • 在地图上执行缩放或平移时是否会正常工作?
    • 这是一个很好的问题。我刚刚在我的身上试了一下,它似乎工作正常。如果您按住Alt 并拖动出现的 2 个灰色按钮之一,它会放大。弹出弹出框时您无法缩放/平移。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 2012-07-15
    • 2012-12-05
    相关资源
    最近更新 更多