Ios 警告:试图显示其视图不在窗口层次结构中的vc
因此,我试图从一个模型VC中提示一个segue在根VC上运行,但是当我尝试这样做时,它会给我一个错误警告:尝试呈现视图不在窗口层次结构中的VC。我尝试了viewWillAppease(),但也不起作用,因为我的VC只覆盖了根VC视图的一半,因为它是一个侧菜单。然而,在直接从根VC提示一个segue之后,它工作得很好 这是我得到的代码:Ios 警告:试图显示其视图不在窗口层次结构中的vc,ios,swift,xcode,uiviewcontroller,swift3,Ios,Swift,Xcode,Uiviewcontroller,Swift3,因此,我试图从一个模型VC中提示一个segue在根VC上运行,但是当我尝试这样做时,它会给我一个错误警告:尝试呈现视图不在窗口层次结构中的VC。我尝试了viewWillAppease(),但也不起作用,因为我的VC只覆盖了根VC视图的一半,因为它是一个侧菜单。然而,在直接从根VC提示一个segue之后,它工作得很好 这是我得到的代码: dismiss(animated: true) { let vc = self.storyboard?.instantiateViewControlle
dismiss(animated: true) {
let vc = self.storyboard?.instantiateViewController(withIdentifier: "MainViewController") as? MainViewController
vc?.performSegue(withIdentifier: "ToSubmition", sender: self)
}
首先尝试解除视图控制器:
dismiss(animated: true) {
self.dismiss(animated: true) {
self.performSegue(withIdentifier: "ToSubmition", sender: self)
}
}
我认为您试图从侧菜单中显示VC,当然这是不可能的,因为视图不在窗口的层次结构中。您可以使用NSNotificationCenter在调用该函数后发布通知键,并关闭侧菜单。然后在主VC中,添加一个观察者并创建一个函数来执行预期的segue 您可以阅读有关如何实施NSNotification Center的信息。
- 完成处理程序总是使用
,使用后台线程
主线程
dismiss(animated: true) { DispatchQueue.main.async { let vc = self.storyboard?.instantiateViewController(withIdentifier: "MainViewController") as? MainViewController vc?.performSegue(withIdentifier: "ToSubmition", sender: self) } }
- 如果失败,请在执行
之前使用segue
dispatch\u并设置一些延迟
dismiss(animated: true) { let mainQueue = DispatchQueue.main let deadline = DispatchTime.now() + .seconds(5) mainQueue.asyncAfter(deadline: deadline) { // ...perform segue } }
- 这是盲目的尝试
dismiss(animated: true) {
if let mainView = UIApplication.shared.keyWindow?.rootViewController as? MainViewController {
mainView.ToSubmition()
}
}
我添加了我拥有的代码,它与你的代码类似,但仍然给出相同的错误。你在故事板中创建了手动序列吗?我不知道你为什么要实例化一个新的视图控制器,它应该已经在你的层次结构中了。我修改了我的答案。试着用我的代码完全替换你的代码。您不应该实例化另一个视图控制器。只要在情节提要中正确创建了手动序列,并且父视图控制器是层次结构中的下一个,我的代码就应该适用于您。但是,在取消后在侧菜单视图控制器上添加performSegue将不会运行。当我运行代码-()没有标识符为“ToSubmition”的segue时,我得到了这个错误。但是,当我将一段从侧菜单VC添加到另一个VC时,它表示侧菜单VC不再在视图层次结构中。您是否尝试过我的代码?我正在我的应用程序上做完全相同的事情。我有一个拆分视图控制器,我从左侧将其取消,并使用此代码返回到上一个VC。您的主VC嵌入到UINavigationController?您可能从viewdidload方法调用它,如果是这样,它将给出此代码warning@Mannopson是的,在故事板中,它设置为模型,并将代码添加到我的NavigationControllerPost在完成解除操作时将通知发送给MainVC。