在 iOS 标注注释中集成 UITableView
Integrating UITableView inside iOS callout annotation
我的应用显示了一张带有一些针点的地图。当触摸其中一个图钉时,我想在标注气泡内可视化一个表格视图。
我发现了类似的东西 here 但它在 Objective-C 中(我想要一个纯粹的 Swift 方法)并且它需要禁用自定义视图的自动布局(我希望避免).
我如何实施此解决方案或在哪里可以找到执行该解决方案的库?
这是一种方法:
让你的主控制器实现 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" 以获得您的 table 视图,并将其附加到情节提要中的场景。希望对您有所帮助。
我的应用显示了一张带有一些针点的地图。当触摸其中一个图钉时,我想在标注气泡内可视化一个表格视图。 我发现了类似的东西 here 但它在 Objective-C 中(我想要一个纯粹的 Swift 方法)并且它需要禁用自定义视图的自动布局(我希望避免).
我如何实施此解决方案或在哪里可以找到执行该解决方案的库?
这是一种方法:
让你的主控制器实现 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" 以获得您的 table 视图,并将其附加到情节提要中的场景。希望对您有所帮助。