WKWebView загружает локальный контент с помощью LoadFileUrl

Я пытаюсь загрузить локальный html-файл в WKWebView с помощью метода LoadFileUrl, но все, что я получаю, - это пустое представление. Это приложение Xamarin.Mac (пока без песочницы).

WKWebViewConfiguration conf = new WKWebViewConfiguration();
WKWebView www = new WKWebView (View.Frame, conf);
View = www;

string index = Path.Combine (NSBundle.MainBundle.BundlePath, "WebApp/Index.html");
string webAppFolder = Path.Combine (NSBundle.MainBundle.BundlePath, "WebApp");

www.LoadFileUrl (new NSUrl ("file://"+index), new NSUrl ("file://"+webAppFolder));

Загрузка веб-страницы с удаленного сервера с помощью «LoadRequest» работает нормально.

Действие сборки для файла Index.html - BundleResource.

Спасибо за вашу помощь!


person frenchfaso    schedule 01.03.2016    source источник
comment
stackoverflow.com/ вопросы / 24882834 /   -  person Gusman    schedule 01.03.2016
comment
@Gusman спасибо, но я уже видел ссылку, если я понял, LoadFileUrl должен быть решением, но это не работает! Может все еще глючит на ElCapitan? Следует ли мне скопировать html-файл во временную папку и загрузить его оттуда?   -  person frenchfaso    schedule 01.03.2016
comment
Он должен загрузиться, лучше посмотрите инспектор веб-просмотра и посмотрите, есть ли ошибка при загрузке: stackoverflow.com/questions/25200116/   -  person Gusman    schedule 01.03.2016


Ответы (2)


Для тех, кто не использует Xamarin и борется с loadFileURL: часами (как я).

Когда вы перемещаете веб-папку в проект, выберите «Создать ссылки на папки».

введите описание изображения здесь

Затем используйте примерно такой код:

if let filePath = NSBundle.mainBundle().resourcePath?.stringByAppendingString("/WebApp/index.html"){
  let url = NSURL(fileURLWithPath: filePath)
  if let webAppPath = NSBundle.mainBundle().resourcePath?.stringByAppendingString("/WebApp") {
    let webAppUrl = NSURL(fileURLWithPath: webAppPath, isDirectory: true)
    webView.loadFileURL(url, allowingReadAccessToURL: webAppUrl)
  }
}

В html файле используйте такой путь к файлу

<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">

не так

<link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet">

Пример каталога введите здесь описание изображения

person Markus T.    schedule 07.03.2016
comment
СПАСИБО! Ваш пример кода и снимки экрана помогли мне решить проблему, которую я преследовал. - person rams; 24.08.2016

Крис Хамонс указал мне правильное направление на Xamarin форумы. Просто меняю

string index = Path.Combine (NSBundle.MainBundle.BundlePath, "WebApp/Index.html");
string webAppFolder = Path.Combine (NSBundle.MainBundle.BundlePath, "WebApp");

to

string index = Path.Combine (NSBundle.MainBundle.ResourcePath, "WebApp/Index.html");
string webAppFolder = Path.Combine (NSBundle.MainBundle.ResourcePath, "WebApp");

сделали свое дело!

person frenchfaso    schedule 01.03.2016
comment
Тогда вы можете выбрать свой ответ в качестве решения :-) - person testing; 27.09.2016