呈现的 ViewController 将被加载但不出现

Posted

技术标签:

【中文标题】呈现的 ViewController 将被加载但不出现【英文标题】:Presenting ViewController will be loaded but does not appear 【发布时间】:2017-10-10 08:16:39 【问题描述】:

呈现的 ViewController 似乎已加载,但屏幕实际上并未重新加载。触摸屏幕后,可以看到 ViewController。 这是我的instantiateViewController 代码:

let v = self.storyboard?.instantiateViewController(withIdentifier: "BrowsingDaragaViewController") as! BrowsingDaragaViewController
self.present(v, animated: true, completion: nil)

BrowsingDaragaViewController 中没有附加代码。 viewDidAppear() 函数在我触摸屏幕之前不会被调用。 我将 Xcode 9 与 Swift4 一起使用。

编辑:

演示代码在tableview(didSelectedRow at indexPath) 中,但是当我使用按钮操作时,它可以正常工作

【问题讨论】:

您能在故事板中向我们展示您的屏幕吗? 我用新的视图控制器替换它,没有更多元素但仍然是同样的问题 在当前视图中点击一个按钮并在点击事件中放入 BrowsingDaragaViewController 推送代码 在推动它工作正常 你确定在主线程吗? 【参考方案1】:

如果您使用过任何手势识别器,请将其移除并检查是否导致问题?

如果您没有使用手势识别器,请在didSelectRowAtIndexPath 中使用以下代码

// Your stuff
DispatchQueue.main.async(execute: 
   self.present(yourViewControllerHere, animated: true, completion: nil)
)
// Your stuff

仍然面临问题,然后确保您的 tableView 在您的 XIB 或 StoryBoard 中设置了单一选择。

【讨论】:

更多详情见此链接***.com/a/30787046/5212377

以上是关于呈现的 ViewController 将被加载但不出现的主要内容,如果未能解决你的问题,请参考以下文章

Swift:关闭 viewController 1 然后呈现 viewController 2

如何从内容 ViewController 呈现 UIViewController?

在 UIWebView 之上呈现情节提要的 ViewController

如何以模态方式呈现标准 UIViewController

当 ViewController 被呈现的 ViewController 覆盖时触发事件

创建 ViewController 并使其可下载