警告:不鼓励在分离的视图控制器上呈现视图控制器

我的情况与我在这里find的其他所有例子都不一样。 我有一个基于标签的应用程序。 在其中一个选项卡上,用户可以按下一个button,一次从Web服务器下载多个文件。

我使用NSOperation来执行这些下载,以便我可以利用内置的依赖关系。 下载全部发生在后台线程上,所以应用程序保持响应。 当最后的下载完成后,我在屏幕上放置一个alertController让用户知道它们是完整的。

如果用户在呈现警报控制器时select了不同的选项卡,则会显示警告:“不鼓励在分离的视图控制器上呈现视图控制器”

如果他们仍然在开始下载的标签,那么我不会收到警告。 我试过replace:

[self presentViewController:alertController animated:YES completion:nil]; 

 [self.view.window.rootViewController presentViewController:alertController animated:YES completion:nil]; 

但结果是alertController从不呈现。

我正在主线程上呈现alertController。

我无法预测下载完成时用户将使用的选项卡视图控制器,并且真的想要摆脱此警告。

我正在使用Obj-C在macOS和Xcode 8上开发。

您需要将下载的结果委托给顶层视图控制器,这听起来像您的UITabBarControllerUITabBarController当然知道哪个选项卡被选中 ,或者它可以在自身上显示警报。

写入以解决当前VC中显示导航控制器或VC的警告

 [self.view.window.rootViewController presentViewController:viewController animated:YES completion:nil]; 

解决视图控制器时修复崩溃

 [self dismissViewControllerAnimated:YES completion:nil]; 

要么

如果你从一个childViewController呈现一个视图,它会给你这个警告。 为了避免这种情况,您可以在childViewController的父级上显示一个视图。

 [self.parentViewController presentViewController:viewController animated:YES completion:nil]; 
Interesting Posts