首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到演示视图控制器UIContextMenuConfiguration

找不到演示视图控制器UIContextMenuConfiguration
EN

Stack Overflow用户
提问于 2020-10-13 00:44:56
回答 1查看 312关注 0票数 0

我有一个父对象,它呈现一个子视图控制器。

代码语言:javascript
复制
        view.addSubview(commentController.view)
        
        addChild(commentController)
        commentController.didMove(toParent: self)

非常基本的东西,一切都运行得很好。

直到我实现了

代码语言:javascript
复制
func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? 

每当我长按一个应该显示UIMenu的单元格时,我都会收到这个错误:Failed to find a presenting view controller for view. The interaction's view (or an ancestor) must have an associated view controller for presentation to work

我以前从未见过这个错误,而且我在任何地方都找不到它。

看起来我没有任何委托方法来将表示定向到特定的视图控制器。

例如,如果我想在这个孩子上面显示一个模式,我可以这样做:

parent?.present(vc, animated: true)

我不知道该怎么解决这个问题。

所以总结一下这个问题:

我有一个带有UITableView的子视图控制器。我正在尝试使用委托方法来表示一个UIMenu。它不会工作,我假设是因为它是一个子视图控制器,但不知道为什么或如何修复它

EN

回答 1

Stack Overflow用户

发布于 2021-07-11 17:07:30

我收到了同样的错误,我不确定这是不是与你完全相同的情况,但这里描述了我的情况以及我是如何修复它的:

问题是我手动创建了UIWindow,但没有使用UIViewController的“UITransitionView”属性返回的视图,然后隐藏了视图,因为它阻塞了其余内容,因此内容,包括UINavigationBar和附加了菜单的UITableView不是UIViewController的直接后代,因此当系统向上遍历层次结构时,它没有找到UIViewController来显示菜单,即使在UIWindow层次结构的不同分支中也有一个。

修复方法是,一旦在rootViewController中使用UIWindow创建了视图,我们就会查询它的“UIView”属性,这将触发UITransitionView层次结构的创建,因为我们没有使用nibs,所以它将创建一个占据整个内容区域的UIView。在那里,我们可以附加UINavigationBar和任何其他内容,这些内容将不会受到阻碍,并且是UIViewController的后代,因此可以找到它,并避免此问题标题中的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64321939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档