有不明白的地方欢迎入群 347636249 探讨
NSBundle.MainBundle.BundlePath
和朋友一起构思了一个想法,借用他的思路捣鼓了一会,效果还行。
先上一段代码看看:
RectangleF newrec = UIScreen.MainScreen.Bounds;
UIWebView webView = new UIWebView(newrec);
NSUrl nsurl = new NSUrl("http://www.baidu.com");
webView.LoadRequest(new NSUrlRequest(nsurl));
webView.ShouldStartLoad = delegate(UIWebView v, NSUrlRequest r, UIWebViewNavigationType t) {
if (t == UIWebViewNavigationType.LinkClicked) {
Console.WriteLine(r.Url.ToString());
this.NavigationController.PushViewController(new MainScreen(), true);
return false;
}
return true;
};
this.View.Add(webView);
我想不用多说,后面这么搞你们懂的。
NSUrl fileUrl = NSUrl.FromFilename("index.html");
NSUrlRequest req = new NSUrlRequest(fileUrl);
this.KPIWebView.LoadRequest(req);
this.KPIWebView.ShouldStartLoad = myHandler;
this.KPIWebView.LoadFinished += delegate {
indicator.StopAnimating ();
this.KPIWebView.Hidden = false;
};
bool myHandler(UIWebView webView, NSUrlRequest request, UIWebViewNavigationType navType)
{
Console.WriteLine(request.Url.ToString());
if(request.Url.ToString() == "about:blank")
{return false;} // doesn't help to avoid loading the "about:blank"
if(request.Url.ToString() == "ttl://data/salesGrowth/global")
{
string strData = Connection.Login("http://[yourIP/path]/salesGrowth/global");
return false;
try{
this.KPIWebView.EvaluateJavascript("Util.loadStoreData("+strData+")");
return false;
}
catch(Exception ex)
{ Console.WriteLine(ex.ToString()); }
return true;
}
}
注意,文件Bulid Action方式是bundle resource
另外,UIWebView有一个EvaluateJavascript方法,它可以执行js串,而js可以做些什么呢,不用我多说,各位可以尽情发挥了。
ps,这样app都可以用pc端的页面来处理,mono就相当于一个架子了。