警告:不鼓励在分离的视图控制器上呈现视图控制器
Warning: Presenting view controllers on detached view controllers is discouraged
我的情况与我在这里找到的所有其他示例都不一样。我有一个基于选项卡的应用程序。在其中一个选项卡上,用户可以按下按钮,一次性从网络服务器下载多个文件。
我使用 NSOperation 来执行这些下载中的每一个,这样我就可以利用内置的依赖项。下载全部发生在后台线程上,因此应用程序保持响应。最终下载完成后,我在屏幕上放置了一个 alertController,让用户知道下载完成。
如果用户在显示警报控制器时选择了不同的选项卡,我会收到警告:"Presenting view controllers on detached view controllers is discouraged"
如果它们仍在开始下载的同一个选项卡上,那么我就不会收到警告。我尝试替换:
[self presentViewController:alertController animated:YES completion:nil];
和
[self.view.window.rootViewController presentViewController:alertController animated:YES completion:nil];
但结果是永远不会显示 alertController。
我在主线程上展示 alertController。
我无法预测下载完成后用户将使用哪个选项卡视图控制器,我真的很想摆脱这个警告。
我正在使用 Obj-C 在 macOS 和 Xcode 8 上开发。
你需要将下载的结果委托给顶层视图控制器,这听起来像你的UITabBarController
。 UITabBarController
当然是knows which tab is selected,或者它可以对自己提出警报。
写入以修复当前 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];
我的情况与我在这里找到的所有其他示例都不一样。我有一个基于选项卡的应用程序。在其中一个选项卡上,用户可以按下按钮,一次性从网络服务器下载多个文件。
我使用 NSOperation 来执行这些下载中的每一个,这样我就可以利用内置的依赖项。下载全部发生在后台线程上,因此应用程序保持响应。最终下载完成后,我在屏幕上放置了一个 alertController,让用户知道下载完成。
如果用户在显示警报控制器时选择了不同的选项卡,我会收到警告:"Presenting view controllers on detached view controllers is discouraged"
如果它们仍在开始下载的同一个选项卡上,那么我就不会收到警告。我尝试替换:
[self presentViewController:alertController animated:YES completion:nil];
和
[self.view.window.rootViewController presentViewController:alertController animated:YES completion:nil];
但结果是永远不会显示 alertController。
我在主线程上展示 alertController。
我无法预测下载完成后用户将使用哪个选项卡视图控制器,我真的很想摆脱这个警告。
我正在使用 Obj-C 在 macOS 和 Xcode 8 上开发。
你需要将下载的结果委托给顶层视图控制器,这听起来像你的UITabBarController
。 UITabBarController
当然是knows which tab is selected,或者它可以对自己提出警报。
写入以修复当前 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];