Взято из https://stackoverflow.com/a/17690221/3032209 :
Вы должны обращаться к onPause () и onResume () WebView из onPause вашей деятельности ( ) и onResume () соответственно.
Приостанавливает любую дополнительную обработку, связанную с этим WebView и связанным с ним DOM, плагинами, JavaScript и т. Д. Например, если этот WebView отключен от экрана, это можно вызвать для уменьшения ненужного ЦП или сетевого трафика. Когда этот WebView снова «активен», вызовите onResume ().
Хорошо, я есть частичный ответ - может быть, гуру объяснят еще кое-что. Проблема заключается в следующем:
[self.navigationController pushViewController:myViewController animated:YES];
Если присмотреться, в этом случае self.navigationController
равно нулю, поэтому push-сообщение никуда не отправляется.
Вместо этого, если я отправлю:
[self.view addSubview:self.myViewController.view];
Тогда появляется представление и вызывается -viewDidLoad
.
Я не совсем уверен, почему self.navigationController
не установлен в этом случае - единственное, что я могу придумать, это то, что self
является подклассом UIViewController
, а не UITableViewController
(откуда пришел код pushViewController
).
Также, тихое разрешение сообщениям обнуляться кажется плохой идеей, хотя эти ответы говорят об обратном. См. Также мой вопрос здесь .
Окончательное редактирование:
Ответы в комментариях ниже, я понял, что функция отображения, которую я на самом деле искал (учитывая, что myViewController является модальным):
[self presentModalViewController:myViewController animated:YES];
Спасибо всем за полезные ответы.
убедитесь, что выход просмотра в File's Owner (ваш подкласс viewController) подключен к фактическому представлению (то есть холсту 480X320 вы увидеть на экране, который вы используете для создания пользовательского интерфейса)
Мне кажется, проблема с заглавными буквами. Вы ссылаетесь на класс MyViewController
вместо свойства myViewController
в вызове pushViewController.
Проверьте журнал выполнения на наличие ошибок. Почти наверняка NIB не загружается, и в этом случае должна быть ошибка. Наиболее вероятная причина - отказ от установки в комплекте. Посмотрите на этапе сборки «Копирование ресурсов» и убедитесь, что XIB действительно копируется. Выполните сборку для симулятора, перейдите в каталог сборки и убедитесь, что NIB находится в пакете .app.
Решение найдено !!!!!
Даже нечто безвредное, как это делает ViewDidload
.
Вставьте это сразу после alloc initwithnibname
viewController.view.hidden = NO; //calls viewDidLoad
RE: РЕШЕНИЕ НАЙДЕНО!!!!!
Действительно, это кажется рабочим решением, однако реальная хитрость заключается не в том, чтобы установить для свойства view.hidden
значение NO, то, что заставляет представление загружаться из файла nib, является вызовом UIViewController
, представление фактически загружается из пера только тогда, когда метод представления вызывается в первый раз.
В этом смысле простое сообщение [viewController view]
заставит представление загрузиться из nib-файла.