Мне нужно загрузить HTML-код внутри моего приложения IOS, но мне нужно, чтобы он был редактируемым HTML, поэтому мой подход был следующим:
Я создал NSString с форматом, поэтому я мог бы создать String с кодом HTML в зависимости от некоторых переменных:
NSString * googleGraphCode = [NSString stringWithFormat: @"" <"html>" <"body>" <"div id = \"% @\">" <"/div>" <"тип скрипта = \"% @\"src= \"% @\"> google.load('visualization', '1.0', {'packages': ['corechart']}); google.setOnLoadCallback(drawChart); function drawChart() {var data = new google.visualization.DataTable();% @data.addRows([% @]); var options = {'title': '% @', 'width':% i, 'height':% i}; var chart = new google.visualization.PieChart(document.getElementById('% @')); chart.draw (данные, параметры);} "<"/script> "<"/body> "<"/html> ", chartID, javaScriptCall, AJAX_Api, javaScriptCall, столбцы, строки, заголовок, widht, height, chartID];
Затем я загрузил webView с помощью HTMLString:
[_graphHostView loadHTMLString:googleGraphCode baseURL:nil];
Я получаю код в NSLog, и я получаю следующее:
"<" html> "<" body> "<" div id = "chart_div"> "<"/div> "<" script type = "text/javascript" src= "https://www.google.com/jsapi ">" <"script type =" text/javascript "> google.load('visualization', '1.0', {'packages': ['corechart']}); google.setOnLoadCallback(DrawChart); function drawChart() {var data = new google.visualization.DataTable(); data.addColumn('string', 'Tipo'); data.addColumn('string', 'Tipo'); data.addColumn('string', 'CantidadGasto'); data.addColumn('string', 'CantidadGasto'); data.addRows([['Gastos', 30000], ['Ingresos', 50000]]); data.addRows([['Gastos', 30000], ['Ingresos', 50000]]); var options = {'title':'Su gráfica de balance:', 'width':320, 'height':300}; var options = {'title': 'Su gráfica de balance:', 'width': 320, 'height': 300}; var chart = new google.visualization.PieChart(document.getElementById('chart_div')); chart.draw (данные, параметры); } "<"/Скрипт> "<"/тело> "<"/html>
Но webView на устройстве ничего не показывает.
Примечание. Я использовал "<" перед html-кодом, поэтому Stackoverflow показывает его в вопросе, поэтому "<" html> = regular html beginning.
loadHTMLString - это правильный способ загрузки webview html
Проблема может быть _graphHostView равна нулю, и из-за этого loadHTMLString не возникает.
Если вы создаете _graphHostView программно, возможно, он не имеет значения alloc/init и равен нулю
Проверить _graphHostView не ноль с помощью отладчика.
Пример рабочего html:
NSString *styledHTML = [NSString stringWithFormat:@"<html> \n"
"<head> \n"
"<style type=\"text/css\"> \n"
"body {font-family: \"%@\"; font-size: %@;\n"
"background-color:#EEEEEE;}\n"
"</style> \n"
"</head> \n"
"<body bgcolor =0xEEEEEE >%@</body> \n"
"</html>", @"Museo Sans", [NSNumber numberWithInt:12], helpResponse.Content];
[contentView loadHTMLString:styledHTML baseURL:nil];
NSString также может использовать избыточные кавычки ("")