弹出框未附加到锚点
Posted
技术标签:
【中文标题】弹出框未附加到锚点【英文标题】:Popover not attached to anchor 【发布时间】:2015-10-06 08:03:59 【问题描述】:我想显示一个带有箭头的弹出框,指向属于我视图一部分的按钮(例如,按钮在我的主视图上)。我在 Interface Builder 故事板编辑器中执行此操作(ctrl 从按钮拖动到弹出内容视图)。弹出显示但未附加到按钮。我为工具栏弹出窗口上的按钮找到的内容按预期显示附加到按钮上。 segue 的 Anchor 属性设置为此按钮。 Xcode 版本 7.0.1 (7A1001)。
编辑:我所做的图像: 1)故事板。首先我 ctrl 从工具栏按钮拖动到第一个控制器,然后 ctrl 从第二个按钮拖动到第二个控制器。 2)正确连接弹出框 3) 弹出框不附加到视图中的按钮。
【问题讨论】:
请附上示例代码。谢谢 @xhruso00 我在 Interface Builder 中执行此操作,还没有代码。我将用于弹出窗口的视图控制器添加到情节提要,然后使用弹出框 segue 将其与视图上的按钮连接起来。 如果您不提供示例,请将图片附在您的代码中,并告诉我什么是正确的行为,什么不是。这比发布不接受的答案要快。我为你花时间(无偿)。 @MarekH 创建了一个空的测试项目并将图像添加到问题中。感谢您的建议。 添加了答案。看起来必须填写错误报告。我什至仔细检查了故事板的源代码(这是正确的) 【参考方案1】:你是对的。以下方法显示发送视图为 nil,默认使用 window 的 contentview 进行弹出。
因此,只需检查 positionView 是否为零即可修复。如果是,将其设置为按钮(为其创建插座)。
将以下方法添加到您的 viewController
- (void)presentViewController:(NSViewController *)viewController asPopoverRelativeToRect:(NSRect)positioningRect ofView:(NSView *)positioningView preferredEdge:(NSRectEdge)preferredEdge behavior:(NSPopoverBehavior)behavior
//do custom implementation (workaround)
[super presentViewController:viewController asPopoverRelativeToRect:positioningRect ofView:positioningView preferredEdge:preferredEdge behavior:behavior];
【讨论】:
我看到的一个问题是如何确定在哪个按钮之后首先调用此方法(我在实际应用程序中有多个按钮)。 检查哪一个被按下(状态)。不要忘记检查调用者之一是否可能是工具栏项。这你必须与 XIB 核对。以上是关于弹出框未附加到锚点的主要内容,如果未能解决你的问题,请参考以下文章
移动时附加到 UICollectionView 中的单元格的弹出框被称为此集合视图的 ReloadData