Подтвердить что ты не робот

Очистить содержимое UIWebView при отключении модального вида (iPhone OS 3.0)

В настоящее время у меня есть UIWebView, который отображается в модальном виде. Это в основном подробный вид, который обеспечивает просмотр страницы, когда пользователь нажимает на ссылку. Когда представление отклоняется и затем снова появляется (когда пользователь нажимает на другую ссылку), ранее загруженный контент все еще отображается, а новое содержимое загружается "сверху" последнего содержимого. Это имеет смысл, поскольку экземпляр UIWebView сохраняется между сеансами и освобождается только тогда, когда требуется память.

Однако я хотел бы полностью очистить UIWebView, когда модальное представление отклонено, так что 1) содержимое очищается и 2) память освобождается. До сих пор мои исследования и попытки не нашли ответа. Эти ссылки не работали для меня:

Я пробовал [[NSURLCache sharedURLCache] removeAllCachedResponses]; и установил webView в ноль и вручную освободил webView при отключении модального просмотра - безрезультатно. Любые мысли из размороженных масс?

4b9b3361

Ответ 1

Освобождение веб-представления, вероятно, лучший подход. Если представление находится в иерархии представлений (имеет супервизор), вы должны вызвать removeFromSuperview, чтобы заставить супервизор освободить представление.

Вы также можете загрузить строку html для пустого документа:

[webView loadHTMLString:@"<html><head></head><body></body></html>" baseURL:nil];

Ответ 2

Иногда loadHTMLString работает слишком медленно. Вы также можете использовать:

[webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML = \"\";"];

Я не уверен, что это освободит много памяти, хотя...

Ответ 3

Похоже, что при некоторых обстоятельствах методы, предложенные drawonward и rob, могут не работать (возможно, что-то делать с CSS на очищаемой странице), однако это действительно работало:

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];

Ответ 4

оценка javascript обычно быстрее, чем загрузка нового запроса.

[webview stringByEvaluatingJavaScriptFromString:@"document.open();document.close();"];

Ответ 5

В моем случае мне нужно было мгновенно очистить веб-представление от его содержимого и сразу же начать загружать что-то другое. Ни загрузка пустой HTML-строки документа, ни очистка страницы с помощью JavaScript не привели к желаемому эффекту. Вместо этого я использовал:

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://stackoverflow.com"]]];

И это очистило представление до фона по умолчанию и инициировало загрузку следующей страницы, как ожидалось.

Я надеюсь, что это тоже поможет кому-то другому.

Ответ 6

Я предпочитаю следующее:

[m_webView stringByEvaluatingJavaScriptFromString:@"location.replace('about:blank')"]