2

Моя ситуация с этим отличается от всех других примеров, которые я смог найти здесь. У меня есть приложение на основе табуляции. На одной из вкладок пользователь может нажать кнопку, которая загружает сразу несколько файлов с веб-сервера.Предупреждение. Представлять контроллеры просмотра на контроллерах отдельного вида не рекомендуется

Я использую NSOperation для выполнения каждой из этих загрузок, чтобы я мог использовать встроенные зависимости. Все загрузки происходят в фоновом потоке, поэтому приложение остается отзывчивым. Когда окончательная загрузка завершена, я помещаю alertController на экран, чтобы пользователь знал, что они завершены.

Если пользователь выбрал другую вкладку, когда предупреждение контроллера представлено я получаю предупреждение: «Представление контроллеров отображения на отдельных контроллерах зрения не рекомендуется»

Если они все еще находятся на той же вкладке, которая начала загрузки то я не получаю предупреждение. Я попытался заменить:

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

с

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

, но результат в том, что alertController никогда не представляется.

Я представляю alertController на основной теме.

У меня нет способа предсказать, какой контроллер просмотра таблеток будет включен, когда загрузка будет завершена, и действительно хотел бы избавиться от этого предупреждения.

Я разрабатываю на macOS и Xcode 8 с Obj-C.

+0

Возможный дубликат [Warning: -содержащие контроллеры просматривать на отдельных контроллерах зрения не приветствуется] (https://stackoverflow.com/questions/19890761/warning-presenting-view-controllers-on-detached-view- контроллеры-есть-препятствовать) –

ответ

4

Вам необходимо делегировать результат загрузки на контроллер верхнего уровня, который звучит как ваш UITabBarController. UITabBarController, конечно, knows which tab is selected, или он может представить предупреждение сам по себе.

+0

Awesome !! Эта строка кода решила мою проблему: [self.tabBarController presentViewController: alertController animated: YES complete: nil]; – Scooter

1

Записи исправить предупреждения на представление навигационного контроллера или 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]; 
Смежные вопросы

 Смежные вопросы