Xcode UIWebView local HTML

2019-03-30 12:25发布

问题:

I know HTML, javascript, CSS… but I wanted to make a native/hybrid iPhone app using HTML5 but without using something like PhoneGap or Nimblekit. I never wrote a real (not web app) iPhone app before, so i don't really know anything about Xcode. I already made a UIWebView with a tutorial that i found, but it displays a website (apple.com). How can i make this display a local file (index.html)?

My code in ViewController.m under (void)viewDidLoad:

    [super viewDidLoad];
    NSString *fullURL = @"html/index.html";
    NSURL *url = [NSURL URLWithString:fullURL];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [_viewWeb loadRequest:requestObj];

回答1:

You have 2 options:

Insert HTML directly like this:

UIWebView *wv = [[UIWebView alloc] init]; 
[wv loadHTMLString:@"<html><body>YOUR-TEXT-HERE</body></html>" baseURL:nil];

Load an html file that exists in your project:

UIWebView *wv = [[UIWebView alloc] init];
NSURL *htmlFile = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"test" ofType:@"html"] isDirectory:NO];
[wv loadRequest:[NSURLRequest requestWithURL:htmlFile]]; 

If you want your example to work, then replace the code you sent with this:

[super viewDidLoad];
NSURL *htmlFile = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]];
[_viewWeb loadRequest:[NSURLRequest requestWithURL:htmlFile]];


回答2:

For Swift 3:

@IBOutlet var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
let URL = Bundle.main.url(forResource: "file name", withExtension: "html")
let request = NSURLRequest(url: URL! as URL)
webView.loadRequest(request as URLRequest)
}


回答3:

you can load local html file from your project bundle as following

NSURLRequest *requestObj = [NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"index" withExtension:@"html"]];
[myweb loadRequest:requestObj];