在 ios swift 中导航到其他屏幕时,不鼓励在分离的视图控制器上显示视图控制器

Posted

技术标签:

【中文标题】在 ios swift 中导航到其他屏幕时,不鼓励在分离的视图控制器上显示视图控制器【英文标题】:Presenting view controllers on detached view controllers is discouraged while navigating to other screen in ios swift 【发布时间】:2015-11-03 11:38:46 【问题描述】:

您好,我需要从 swift 类导航到目标 c 类,然后出现错误

“不鼓励在分离的视图控制器上显示视图控制器”并显示空白屏幕。

我添加了如下导航代码:

var captureViewCon = CaptureViewController(nibName: "CaptureViewController", bundle: nil)
self.presentViewController(captureViewCon, animated: true, completion: nil)

请帮助我。我做错了什么?

【问题讨论】:

你把这段代码放在哪里了?您的视图控制器的层次结构是什么? 您没有提供足够的信息。显示包含此代码的方法。解释什么视图控制器试图呈现另一个,呈现的视图控制器是如何显示在屏幕上的?在我看来,您是在根本不在屏幕上的视图控制器实例上调用此方法。 我在 viewDidAppear 中添加了 uibutton,在按钮目标中添加了导航到屏幕的代码 【参考方案1】:

尝试将动画更改为 false,或将代码移至视图控制器生命周期的后期。或者从应用的 rootViewController 显式调用 presentViewController。

【讨论】:

【参考方案2】:

如果您尝试使用 xib 文件并且您的 uiviewcontroller 在objective-c 中,那么您的代码是正确的,但是如果您尝试显示在您的stroyboard 中的uiviewcontroller 并且类在objective-c 中,那么此代码会有轻微的变化喜欢:-

 let captureViewCon:UIViewController = (self.storyboard?.instantiateViewControllerWithIdentifier("FirstViewController"))!
    self.presentViewController(captureViewCon, animated: true, completion: nil)

注意:- 确保在桥头文件中导入目标 c 类。

【讨论】:

我没有快速客观地使用故事板,我使用的是 xib 文件 您在此链接中给出的问题解决方案***.com/questions/19890761/…【参考方案3】:

请尝试使用:

let captureViewCon:UIViewController = (self.storyboard?.instantiateViewControllerWithIdentifier("FirstViewController"))! self.view.window?.rootViewController?.presentViewController(captureViewCon, animated: true, completion: nil)

【讨论】:

以上是关于在 ios swift 中导航到其他屏幕时,不鼓励在分离的视图控制器上显示视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

iOS 应用在导航期间迁移到 swift3 后崩溃

IOS Swift - 导航到没有情节提要的主屏幕

在 Swift 中清除导航堆栈

如何创建固定导航栏 iOS Swift

在屏幕之间浏览 - Swift IOS

在 AppDelegate iOS 中单击 FCM 推送通知时导航到特定选项卡 - Swift