MonoTouch:非常简单的webView代码

时间:2013-12-29 04:05:44

标签: ios webview uiwebview xamarin.ios

我正在使用MonoTouch上的一些C#后台任务创建一些Web /本机混合iOS应用程序。

对于初学者,我尝试创建非常简单的webView示例引用

(上面的示例项目代码有效,但我只需要一个没有NavigatorView的webView) 和

到目前为止我的代码是:

AppDelegate.cs

using System;
using MonoTouch.Foundation;
using MonoTouch.UIKit;

namespace iostest
{ 
    [Register ("AppDelegate")]
    public partial class AppDelegate : UIApplicationDelegate
    { 
        UIWindow window;  
        public override bool FinishedLaunching (UIApplication app, NSDictionary options)
        {
            // create a new window instance based on the screen size
            window = new UIWindow (UIScreen.MainScreen.Bounds);
            window.RootViewController = new WebViewController(); 
            // make the window visible
            window.MakeKeyAndVisible ();

            return true;
        }
    }
}

WebViewController.cs

using System;
using System.IO;
using MonoTouch.Foundation;
using MonoTouch.UIKit;

namespace iostest
{
    public class WebViewController : UIViewController {

        UIWebView webView;
        public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();
            Console.WriteLine ("WebView Launched"); //this works

            webView = new UIWebView(View.Bounds);
            webView.ScalesPageToFit = false;
            webView.LoadRequest (new NSUrlRequest
                (new NSUrl (Path.Combine(NSBundle.MainBundle.BundlePath,
                               "www/app.html"), false)));

            this.View.AddSubview(webView);
        }
    }
}

此代码运行时没有错误,但结果只有空白页面,而没有显示我的HTML内容“www / app.html”(或“http://google.com”无论如何)。

我看不出我想念的逻辑。任何想法?感谢。

1 个答案:

答案 0 :(得分:1)

好吧,事情很模糊,但我自己解决了。

问题是本地资源文件(“www / app.html”)应该在IDE的BuildAction属性中标记为“内容”。

我记得几年前我被困在这里,仍然看到很多人被困。

缺乏文档会导致浪费时间。请记录Xamarin。

目前的代码供将来参考:

<强> AppDelegate.cs

using System;
//using System.Collections.Generic;
//using System.Linq;
using MonoTouch.Foundation;
using MonoTouch.UIKit;

namespace iOStest2
{ 
    [Register ("AppDelegate")]
    public partial class AppDelegate : UIApplicationDelegate
    {
        UIWindow window;     
        public override bool FinishedLaunching (UIApplication app, NSDictionary options)
        {
            window = new UIWindow (UIScreen.MainScreen.Bounds);      
            window.RootViewController = new WebViewController ();
            window.MakeKeyAndVisible ();

            return true;
        }
    }
}

<强> WebViewController.cs

using System;
using System.IO;
using MonoTouch.Foundation;
using MonoTouch.UIKit;

namespace iOStest2
{
    public class WebViewController : UIViewController
    {
        UIWebView webView;

        public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();
            Console.WriteLine ("WebView Launched");
            View.BackgroundColor = UIColor.Gray;
            //string url = "http://google.com";
            string url= Path.Combine(NSBundle.MainBundle.BundlePath,
                                 "Content/app.html");
            webView = new UIWebView(View.Bounds);
            webView.LoadRequest(new NSUrlRequest(new NSUrl(url,false))); 
            webView.ScalesPageToFit = false;

            View.AddSubview(webView);
        }
    }
}