Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 警告:不建议在分离的视图控制器上显示视图控制器_Ios_Objective C_Xcode_Compiler Warnings_Uialertcontroller - Fatal编程技术网

Ios 警告:不建议在分离的视图控制器上显示视图控制器

Ios 警告:不建议在分离的视图控制器上显示视图控制器,ios,objective-c,xcode,compiler-warnings,uialertcontroller,Ios,Objective C,Xcode,Compiler Warnings,Uialertcontroller,我在这方面的情况与我在这里找到的所有其他例子都不同。我有一个基于标签的应用程序。在其中一个选项卡上,用户可以按下一个按钮,同时从web服务器下载多个文件 我使用NSOperation来执行这些下载,这样我就可以利用内置的依赖项。下载都发生在后台线程上,因此应用程序保持响应。当最终下载完成时,我在屏幕上放置了一个alertController,让用户知道它们已经完成 如果用户在显示警报控制器时选择了其他选项卡,我会收到警告:“不建议在分离的视图控制器上显示视图控制器” 如果它们仍然在开始下载的同一

我在这方面的情况与我在这里找到的所有其他例子都不同。我有一个基于标签的应用程序。在其中一个选项卡上,用户可以按下一个按钮,同时从web服务器下载多个文件

我使用NSOperation来执行这些下载,这样我就可以利用内置的依赖项。下载都发生在后台线程上,因此应用程序保持响应。当最终下载完成时,我在屏幕上放置了一个alertController,让用户知道它们已经完成

如果用户在显示警报控制器时选择了其他选项卡,我会收到警告:“不建议在分离的视图控制器上显示视图控制器”

如果它们仍然在开始下载的同一个选项卡上,那么我不会得到警告。我试着替换:

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

但结果是alertController从未出现

我在主线程上演示alertController

我无法预测下载完成后用户将在哪个选项卡视图控制器上,我真的很想摆脱这个警告


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

您需要将下载结果委托给顶级视图控制器,它听起来像您的
UIDABBARCONTROLLER
UITabBarController
当然可以,也可以自行显示警报

写入以修复当前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];

令人惊叹的!!这行代码解决了我的问题:[self.tabBarController presentViewController:alertController动画:YES完成:nil];可能重复的
[self.parentViewController presentViewController:viewController animated:YES completion:nil];