1

我正在尝试在我的 MonoTouch 项目中使用UIWebView. 我添加了必要的插座并通过使用 loadrequest 加载 url 并loadHtmlString格式化简单的文本行进行了测试。这工作正常。我什至使用下面的代码测试了 fusionchart 在我的浏览器上是否正常工作,并且确实如此。

我的 MonoTouch 项目中有一个名为“charts”的文件夹,其中包含 Column3d.swf、jquery.min.js、FusionCharts.js、FusionCharts.HC.js 和 FusionCharts.HC.Charts.js。

在我的

  • ViewDidLoad

    string htmlString = "<html>
                         <head>
                         <script type=\"text/javascript\"src=\"Charts/jquery.min.js\">
                         </script>
                         <script type=\"text/javascript\" src=\"Charts/FusionCharts.js\">
                         </script>
                         <script type=\"text/javascript\" src=\"Charts/FusionCharts.HC.js\">
                         </script>
                         <script type=\"text/javascript\" src=\"Charts/FusionCharts.HC.Charts.js\">
                         </script>
                         </head>
                         <body>
                         <div id=\"chartContainer\">FusionCharts will load here!
                         </div>
                         <script type=\"text/javascript\"> var myChart = new FusionCharts( \"Charts/Column3D.swf\", \"myChartId\", \"400\", \"300\", \"0\", \"1\" );myChart.setXMLUrl(\"Charts/Data.xml\");
                        myChart.render(\"chartContainer\");
                         </script>
                         </body>
                         </html>";
    
    this.webView.LoadHtmlString (htmlString, new NSUrl ("./Charts", true));
    
        /*string htmlString = "<html><head></head><body><span style=\"font-weight: bold;\">This</span> " +
     "<span style=\"text-decoration: underline;\">is</span> <span style=\"font-style: italic;\">some formatted</span> " +"<span style=\"font-weight: bold;text-decoration: underline;\">text!</span><br></body></html>";*/  //works
    
        //this.webView.LoadHtmlString (htmlString, null);  //works
    
  • 数据.xml

    <chart caption='Weekly Sales Summary'
    xAxisName='Week' yAxisName='Amount' numberPrefix='$'> 
    <set label='Week 1' value='14400' /> 
    <set label='Week 2' value='19600' /> 
    <set label='Week 3' value='24000' /> 
    <set label='Week 4' value='15700' /> 
    </chart>
    

有人可以解释我怎样才能让它工作吗?提前致谢。

编辑:我也试过

    string htmlString = "<html><head> <title>Creating Pure JavaScript chart</title><script type=\"text/javascript\" src=\"charts/FusionCharts.js\"></script></head> <body><div id=\"chartContainer\">FusionCharts will load here!</div> <script type=\"text/javascript\">FusionCharts.setCurrentRenderer('javascript');var myChart = new FusionCharts( \"charts/Column3D.swf\", \"myChartId\", \"400\", \"300\", \"0\", \"1\" );myChart.setXMLData(\"<chart><set label='Data1' value='1' /></chart>\"); myChart.render(\"chartContainer\"); </script></body> </html>";

我强制渲染器使用 javascript 并在字符串中设置图表参数无济于事。任何人?

4

3 回答 3

1

我解决了我的问题,并认为如果有人遇到类似问题,我会发布它。

我做的第一件事是右键单击我的每个 javscript 文件,即 FusionCharts.js、FusionCharts.HC.js 和 FusionCharts.HC.Charts.js,并将它们的构建类型设置为内容。

然后我告诉 Monotouch,图表的构建路径将包含在图表文件夹中,方法是声明

string path = NSBundle.MainBundle.BundlePath + "/Charts/";

由于我声明我将在 Charts 文件夹中查找相关文件,因此我必须通过从所有“src”中删除“charts”关键字引用来修改我的 htmlString,如下所示(因为我们已经在 lo.

string htmlString = "<html>
                 <head>
                 <script type=\"text/javascript\" src=\"jquery.min.js\">
                 </script>
                 <script type=\"text/javascript\" src=\"/FusionCharts.js\">
                 </script>
                 <script type=\"text/javascript\" src=\"/FusionCharts.HC.js\">
                 </script>
                 <script type=\"text/javascript\" src=\"FusionCharts.HC.Charts.js\">
                 </script>
                 </head>
                 <body>
                 <div id=\"chartContainer\">FusionCharts will load here!
                 </div>
                 <script type=\"text/javascript\"> var myChart = new FusionCharts(\"Column3D.swf\", \"myChartId\", \"400\", \"300\", \"0\", \"1\"          );myChart.setXMLUrl(\"Charts/Data.xml\");
                myChart.render(\"chartContainer\");
                 </script>
                 </body>
                 </html>";

然后我调用 loadHtml 字符串方法,如下所示,第二个参数指向包含 javascript 文件的路径。

this.webView.LoadHtmlString(htmlString, new NSUrl(path, true));
于 2012-05-07T09:51:37.467 回答
0

我什至使用下面的代码测试了 fusionchart 在我的浏览器上是否正常工作,并且确实如此。

您是否使用运行 Safari 的 iOS 设备对此进行了测试?

包含 Column3d.swf 的项目,

这看起来像一个Flash文件,而 iOS(和 WebKit)不支持Flash。

网站暗示了 HTML5 版本 - 因此,如果它们支持无闪存浏览器,那么您应该能够使用 MonoTouch(或 iOS 中的任何东西)使用 FusionChart 做您想做的事情。否则,您可能需要查看其他图表产品(或服务器端解决方案)。

于 2012-04-28T16:01:02.637 回答
0

FusionCharts 发布了一篇博文,展示了如何在 iOS 设备中获取 HTML5 图表。

在这里看看 - http://blog.fusioncharts.com/2012/02/create-charts-for-iphone-and-ipad-apps-using-fusioncharts-xt/

于 2012-04-30T06:23:32.160 回答