滚动视图中的 Swift 弹出框
Posted
技术标签:
【中文标题】滚动视图中的 Swift 弹出框【英文标题】:Swift popover in scrollview 【发布时间】:2016-02-04 10:35:47 【问题描述】:我有一个带有一些子视图的滚动视图。在这个子视图中,我还有其他子视图。
我想展示一个固定到这个“嵌套”子视图之一的弹出框。
我正确显示了弹出框,并且它被锚定到更正的子视图,但是每当我滚动滚动视图时,弹出框不会随滚动视图一起移动。 每次水平滚动滚动视图时,我都希望弹出框移动并调整其“x”原点。
这是我用来呈现弹出框的代码。
func showAlarmViewController(notification: NSNotification)
troubleViewController = TroubleshootViewController()
troubleViewController!.modalPresentationStyle = .Popover
troubleViewController!.preferredContentSize = CGSizeMake(300.0, 150.0)
popoverMenuViewController = troubleViewController!.popoverPresentationController
popoverMenuViewController!.permittedArrowDirections = .Down
popoverMenuViewController!.delegate = self
popoverMenuViewController!.passthroughViews = [self.detailScrollView]
popoverMenuViewController!.sourceView = (notification.object as! UIView).superview
popoverMenuViewController!.sourceRect = CGRect(x: -100, y: 100, width: 300, height: 150)
presentViewController(
troubleViewController!,
animated: true,
completion: nil)
有什么帮助吗? 谢谢!
【问题讨论】:
【参考方案1】:您必须将 popoverMenuViewController 添加到滚动视图的嵌套子视图之一或滚动视图中
scrollview.addsubview(popoverMenuViewController)
如果 popoverMenuViewController 控制器是 UIViewController,则在滚动视图中添加容器视图并将该容器视图链接到 popoverMenuViewController。稍后您可以将容器视图添加为滚动视图的子视图。
这里是如何实现容器视图的链接。 How to use a 'Container View' in ios? 还有http://spin.atomicobject.com/2015/07/21/ios-container-views/
或者在scrollview的嵌套子视图之一中添加popoverMenuViewController
subviewofscrollview.addsubview(popoverMenuViewController)
根据您添加此 popoverMenuViewController 的子视图内容大小设置您的 popoverMenuViewController 锚。
【讨论】:
popoverMenuViewController 是一个 UIPopoverPresentationController,我不能将它添加为子视图。 我编辑了代码并提供了一些链接,您可以如何使用容器视图。 我明白了,但是我不能使用原生的“presentViewController”功能吗?因为我记得我在 obj-c 中做了这些东西,但我不记得是怎么做的……可能我在 scrollViewDidScroll 方法中做了一些事情……我想使用本机弹出框,因为它会自动在正确的位置显示弹出框以上是关于滚动视图中的 Swift 弹出框的主要内容,如果未能解决你的问题,请参考以下文章